TIPS†Windowsでシンボリックリンク†Link Shell Extensionを用いる. 対応する環境のファイルをダウンロード,インストール後右クリックメニュー,右ドラッグメニューから作成できる. コマンドプロンプト†コマンドプロンプトでpatch†
コマンドプロンプトでls†Windows Service For UNIXやGowを導入する. Windowsで使えるコマンド†pushd,popd†コマンドプロンプトでフォルダを移動するときは, cd d:\temp のように通常 cd コマンドを使うが,cdの代わりにpushdを用いると popdコマンドで以前のフォルダに戻ることができる. 例えば,現在"C:\Windows\System32"にいて,"d:\temp"に移動してまた戻るという作業は以下のようになる. C:\Windows\System32>pushd D:\Temp D:\Temp>popd C:\Windows\System32> ディレクトリパスの情報はスタックにためられるので,何回か移動した後でも順番にたどって戻れる. D:\Temp\dir0>pushd ..\dir1 D:\Temp\dir1>pushd ..\dir2 D:\Temp\dir2>popd D:\Temp\dir1>popd D:\Temp\dir0> また,pushdの特別な機能として,ネットワーク上のパス(UNCパス,例えば"\\pc1\dir")にpushすると, 自動的にそのパスをネットワークドライブとして割り当てるという機能がある. 例えば, D:\Temp>pushd \\enterprise\data Z:\>net use 新しい接続は記憶されます。 ステータス ローカル名 リモート名 ネットワーク名 ------------------------------------------------------------------------------- OK Z: \\enterprise\data Microsoft Windows Network コマンドは正常に終了しました。 Z:\>popd D:\Temp>net use 新しい接続は記憶されます。 一覧にエントリが存在しません。 popdすると割り当てられたドライブは解放される. ネットワークドライブの割り当て†net useを用いる.割り当てるときは net use x: \\pcname\dir "x:"を"*"にすれば,空いているドライブ名に割り当てられる(最後から). 接続にユーザ名とパスワードが必要な場合は以下. net use x: \\pcnam\dir password /user:username 次回起動時に自動的に接続する場合は以下. net use x: \\pcnam\dir /persistent:yes 切断する場合は以下. net use x: /delete バッチファイル(*.bat)†環境変数†
システム環境変数†OS側で最初から定義されている環境変数.以下はWindows 7での代表的なもの.
コマンド†
ユーザ入力†
条件分岐†if 条件式 実行1 else 実行2 複数行にわたる場合は, if "%X%" == "fujis" ( echo OK ) else ( echo NG )
Forループ†for %%変数名 in (集合) do 実行 [実行パラメータ] コマンドラインで直接入力する場合は単純に%変数名でよいが,バッチファイルの場合は%%変数名としなければならない.
四則演算†"set /a"を使うと四則演算ができる. set /a X=20 set /a Y=X+1 set /a Z=X%%7 上から代入,加算,剰余を計算している. バッチファイルでは%は特別な意味があるので,剰余には%%が使われる. 環境変数の遅延展開†for文やif文で以下のように括弧を使って処理を行うと,括弧を抜けるまでは処理内容が変数に反映されない. @echo off setlocal set X=0 for /l %%I in (1,1,5) do ( echo %X% set /a X=X+2 ) endlocal 実行結果は 0 0 0 0 0 これを解決するには,
バッチファイルの例:ファイルコピー†適当なテキストファイルを作成して,拡張子をbatにして,以下の内容を記述する. @echo off setlocal set DEST=D:\ echo copy files to %DEST% for %%F in (%*) do ( copy "%%F" "%DEST%" /V /Y ) endlocal pause batファイルに任意のファイル(複数でも可)をドラッグアンドドロップすると, DESTに設定されたパスにコピーする(上書きコピー). バッチファイルの例:ファイルをN個おきにコピー†@echo off setlocal enabledelayedexpansion set DEST=E:\result\ set N=3 set IDX=0 set IDX3=0 echo copy files to %DEST% for %%F in (%*) do ( set /a IDX3=IDX%%N if !IDX3! == 0 ( echo %%F copy "%%F" "%DEST%" /V /Y ) set /a IDX=IDX+1 ) endlocal pause 上記の遅延展開を使っている. この例ではD%Dしたファイル群を3個おきにDESTにコピーする. |