Powershell?一体何だねそれは? これはWindowsでの.batファイルの書き方についてメモです。
変数の代入
1 2 |
set test=Hello World! echo %test% |
コメント
先頭文字列が「rem」または「::」であった場合にコメントと認識されます。「::」や「: 」は場合によって動作しないため、「rem」をコメントに使用するのが安全だったり。
1 2 3 4 |
rem これはコメント行になります。 ::これはコメント行になります。 : コロンの後に空白行があってもコメントになります echo ::これはコメントにならず、echo関数によって出力されます |
引数
1 2 |
set arg1=%1 set arg2=%2 |
バッチの呼び出し
他のバッチを呼び出すときはcall関数を使用します
1 |
call other.bat |
実行ファイルのパス
以下の変数で実行ファイルのパスにアクセスできます
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
::実行ファイルまでの絶対パス echo %~dp0% ::実行ファイルのドライブ名(「C:」「D:」等) echo %~d0% ::実行ファイルまでのパス(ドライブ名なし) echo %~p0% ::実行ファイル名までを含む絶対パス(ダブルクォートあり) echo %0% ::実行ファイル名までを含む絶対パス(ダブルクォートなし) echo %~f0% ::実行ファイル名(拡張子なし) echo %~n0% ::以下を実際に実行してみるとわかりやすいかも echo dp0 %~dp0% echo d0 %~d0% echo p0 %~p0% echo p0 %0% echo f0 %~f0% echo n0 %~n0% |
ファイルの存在確認
ファイルが存在するかはIF EXISTで確認することができます。
1 2 3 4 |
::ファイルが存在していたら削除する IF EXIST C:\hogehoge.txt ( del C:\hogehoge.txt ) |
変数を用いて確認することもできます。
1 2 3 4 5 |
::ファイルが存在していたら削除する SET DEL_FILE = C:\hogehoge.txt IF EXIST %DEL_FILE% ( del %DEL_FILE% ) |
相対パスを指定することはできないので実行ファイルまでのパスが書かれている変数を使用します。
1 2 3 4 5 |
::ファイルが存在していたら削除する SET DEL_FILE = hogehoge.txt IF EXIST %~dp0%%DEL_FILE% ( del %~dp0%%DEL_FILE% ) |
FTP転送
FTPの転送はFTPのコマンドを記述したテキストファイルを作成して実行する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
::ftp.txtが既に存在したら削除 if exist ftp.txt del ftp.txt > nul ::ftp.txtの作成、ログインして「/home/test/」ディレクトリを作成 ::「*.txt」をアップロードして切断するまでの流れを記述 echo username>>ftp.txt echo password>>ftp.txt echo mkdir /home/test/>>ftp.txt echo cd /home/test/>>ftp.txt echo mput *.txt>>ftp.txt echo y>>ftp.txt echo disconnect>>ftp.txt echo quit>>ftp.txt ::ftp転送を実行(実行するコマンドファイル名とIPアドレスを入力する) ftp -s:ftp.txt 192.168.x.x |
プロセス一覧
プロセスの一覧はtasklistコマンドで確認することができる。
1 2 3 4 |
tasklist notepad.exe 776 Console 0 5,636 K cmd.exe 3936 Console 0 3,052 K |
プロセスの存在確認
tasklistコマンドにfindコマンドをパイプする事で指定したプロセスが存在しているかを確認することができる。
1 2 3 4 5 6 7 |
TASKLIST | FIND "notepad.exe" > NUL IF NOT ERRORLEVEL 1 ( ECHO プロセスが起動しています。 ) ELSE ( ECHO プロセスが起動していません。 ) |
プロセスの削除
taskkillコマンドを使用することで対象のプロセスを強制終了(プロセスの削除)ができる。
1 2 |
taskkill /F /IM notepad.exe 成功: プロセス "notepad.exe" (PID 776) は強制終了されました。 |