SYNTAX
ExitCode(終了コード)
バッチの各コマンドラインで呼び出すプロセスの終了コードは
%ERRORLEVEL% で取得できる。
// test.js
WScript.Quit( 0 );
// main.exe
int main (){
return 1;
}
cscript test.js
echo ExitCode = %ERRORLEVEL%
./main.exe
echo ExitCode = %ERRORLEVEL%
バックグラウンド実行(Background)
非同期でプロセスを実行するには start コマンドを使う。
__LINK__(start)
echo start
start notepad.exe
echo finish
start を利用しないとブロックされる
echo start
notepad.exe
echo finish
組込み変数(EmbededVariable)
echo %CD%
echo %SystemRoot%
echo %SystemDrive%
echo %HomePath%
echo %HOMEPATH%
echo %HOSTNAME%
コマンドのエコー
通常のバッチの実行では各行のコマンドがエコーされる。
各コマンドの最初に @ をつける
@mkdir tmp
エコーをオフにする。
echo off
mkdir tmp
Command.の結合
SYNTAX
cmdA && cmdB
cmdA || cmdB
echo aaa && echo bbb
cmd /c copy aa.txt bb.txt >nul && echo succeeded.
cmd /c copy aa.txt bb.txt >nul || echo fail
cmd /c echo aaa && echo succeeded.
Redirect
date /t > "d/test.txt"
コマンド置換
set a=%date%
set a=%time%
set a=%hostname%
POINT
ファイル名にタイムスタンプをつける
set t=%time%
set f=log%t%.txt
STDOUT
DESC
cmd にも pipe という概念がある
echo aaa > d:/ret.txt
echo aaa 2> d:/ret.txt
echo aaa 2> d:/ret.txt
echo aaa > d:/ret.txt 2>&1
quot
// VS でもできる
"copy $(TARGET)"
// < をはく
echo ^<
c:/Program Files/foo/test.exe
"c:/Program Files/foo/test.exe"
test.bat "argument"
/pro/bat/arg.bat "argument"
C:\Program" "Files\Windows" "Media" "Player\wmplayer.exe /play C:\mymus\test.wpl
"C:\Program Files\Windows Media Player\wmplayer.exe" /play C:\mymus\test.wpl
Drive.のきりかえ
d
d:
D:
Comment
REM comment
rem comment
文字.Code
WARNING
sjis-unix では 日本語はダメ