Windows batch
起動引数
※%0は起動ファイル名。
変数
宣言
参照
if : 条件分岐
if 条件 (
コマンド
) else (
コマンド
)
例 : 文字列
@echo off
set hoge=%1
if %hoge%==hoge (
echo true
) else (
echo false
)
for
ディレクトリ配下のファイル一覧を取得する
変数(%%A)は必ず1文字でなくてはいけない。
for オプション 検索対象フォルダ %%A in (ファイル名) do (
echo %%A
)
オプション
オプション |
効果 |
/r |
再帰検索して、ファイルのみ取得 |
/d |
ディレクトリのみ取得 |
実行例
>dir sample01 /b /s
sample01\sample01_01.txt
sample01\sample02
sample01\sample02\sample02_01.txt
@echo off
for /r .\sample01 %%A in (*.*) do (
echo %%A
)
C:\Users\ittim\BatchSample\sample01\sample01_01.txt
C:\Users\ittim\BatchSample\sample01\sample02\sample02_01.txt
参考
ファイルを読み込む
@echo off
set filename=%1
for /f %%l in (%filename%) do (
echo %%l
)
参考
ファイルの???のみ取得する
オプション |
取得するもの |
%%f |
ファイルのフルパス |
%%~nf |
ファイル名のみ。拡張子を除く。 |
%%~xf |
拡張子のみ。(”.”がついてくる。) |
%%~nxf |
ファイル名のみ。拡張子を含む。 |
%%~df |
ドライブレター(C:]等) |
%%~pf |
ドライブレターを除いたディレクトリ名 |
%%~dpf |
ディレクトリ名 |
%%~tf |
ファイル更新日 |
%%~zf |
ファイルサイズ |
実行例
>dir hogedir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は AC93-73F5 です
C:\Users\alluser\WindowsBatSample\hogedir のディレクトリ
2022/05/11 09:01 <DIR> .
2022/05/11 09:01 <DIR> ..
2022/05/11 08:52 4 piyo.txt
1 個のファイル 4 バイト
2 個のディレクトリ 48,286,896,128 バイトの空き領域
@echo off
for /r .\hogedir %%f in (*.*) do (
echo %%f
echo %%~nf
echo %%~xf
echo %%~nxf
echo %%~df
echo %%~pf
echo %%~dpf
echo %%~tf
echo %%~zf
echo
)
>hoge.bat
C:\Users\alluser\WindowsBatSample\hogedir\piyo.txt
piyo
.txt
piyo.txt
C:
\Users\alluser\WindowsBatSample\hogedir\
C:\Users\alluser\WindowsBatSample\hogedir\
2022/05/11 08:52
4
ECHO は <OFF> です。
参考
置換
実装例
@echo off
setlocal enabledelayedexpansion
set PROJECT_HOME=c:\work\
set PWD=%~dp0
for /f "delims=" %%a in (%1) do (
set line=%%a
echo !line:%PROJECT_HOME%=%PWD%!
)
c:\work2\copies>type list.txt
c:\work\hoge\hoge.txt
c:\work\hoge\piyo\piyo.txt
c:\work2\copies>create_copies.bat list.txt
c:\work2\copies\hoge\hoge.txt
c:\work2\copies\hoge\piyo\piyo.txt
参考
現在のディレクトリ取得
@echo off
@REM どちらでもOK。
echo %~dp0
echo %~d0%~p0
標準出力に表示されるコマンド結果を変数に代入する
@echo off
@REM 「Hello, World!」をresultに代入する。
for /f "delims=" %%i in ('echo Hello, World!') do set "result=%%i"
robocopy
オプション |
効果 |
/E |
再帰コピーする。 |
/MIR |
再帰コピーする。コピー先にあって、コピー元にないファイル、ディレクトリは削除される。コピー元、コピー先の指定を誤ると破滅的な結果を招きます。 |