ホーム バッチテクニック

局所変数を使用する

@echo off

set a=1
echo %a%

setlocal
set a=2
echo %a%

setlocal
set a=3
echo %a%
endlocal

echo %a%
endlocal

echo %a%

起動ファイル名と起動引数

@echo off

echo %0
echo %1
echo %2
echo %*

エラー出力のみファイルへ書き出す

echo 処理開始 >> log.txt
dir 存在しないファイル 2>> log.txt
echo 処理終了 >> log.txt

標準出力とエラー出力の切り捨て

@echo off

echo ===== test1 =====
dir 存在しないファイル

echo ===== test2 =====
dir 存在しないファイル >nul

echo ===== test3 =====
dir 存在しないファイル >nul 2>&1

ERRORLEVEL

@echo off

dir | find AIUEO
if ERRORLEVEL 1 echo %ERRORLEVEL%

if文のブロック化

@echo off

dir >nul 2>&1
if ERRORLEVEL 1 (
  echo 1
  echo 2
) else (
  echo 3
  echo 4
)

dir 存在しないファイル >nul 2>&1
if ERRORLEVEL 1 (
  echo 5
  echo 6
) else (
  echo 7
  echo 8
)

文字列の加工

@echo off
setlocal

set tmp=%TIME%
set tmp=%tmp: =0%
set tmp=%tmp::=%
set tmp=%tmp:.=%
set tmp=%DATE:/=%%tmp%

echo %tmp%

endlocal

曜日の取得

WScript.Quit(WeekDay(Date))
@echo off
setlocal

CSCRIPT /B wday.vbs
SET WDAY=%ERRORLEVEL%

echo %WDAY%

endlocal