forの中で文字列/数値を足そうと思っても、変数が展開されない。
set CMD=cd for /f %a in ('%CMD%') do @set RESULT=%a echo %RESULT%
test.bat "aaa bbb" "aaa bbb" aaa bbb
7zdir .
echo %date% 2014/12/01 echo %time% 01:02:03.45 echo %date:~-10,4%%date:~-5,2%%date:~-2,2% 20141201 echo %TIME:~0,2%%TIME:~3,2%%TIME:~6,2% 010203
CD /D "%~dp0"
a,100 b,200
@echo off for /f "tokens=1,2 delims=," %%a in (a.csv) do echo %%a ---- %%b rem 結果:a ---- 100 rem b ---- 100 for /f "tokens=1,2 delims=," %%a in (a.csv) do if "%%a" == "a" echo %%b rem 結果:100
call /? ... %~1 - すべての引用句 (") を削除して、%1 を展開します。 %~f1 - %1 を完全修飾パス名に展開します。 %~d1 - %1 をドライブ文字だけに展開します。 %~p1 - %1 をパスだけに展開します。 %~n1 - %1 をファイル名だけに展開します。 %~x1 - %1 をファイル拡張子だけに展開します。 %~s1 - 展開されたパスは、短い名前だけを含みます。 %~a1 - %1 をファイル属性に展開します。 %~t1 - %1 をファイルの日付/時刻に展開します。 %~z1 - %1 をファイルのサイズに展開します。 %~$PATH:1 - PATH 環境変数に指定されているディレクトリを検索し、 最初に見つかった完全修飾名に %1 を展開します。 環境変数名が定義されていない場合、または 検索してもファイルが見つからなかった場合は、 この修飾子を指定すると空の文字列に展開されます。
echo %0 sample.bat