初めに
WindowsもPowerShellが非常に使い勝手がよくなりLinuxやMacのようにコマンドラインでも様々なことができるようになりました。しかし今度は、従来使っていたbatファイルのコマンドを忘れてしまうことがあります。。そこでサンプル集の覚書きを書いておきます。
サンプルコード
ディレクトリにあるファイルの一覧を出力する
dir /b /o:e >list.txt
>
はテキストで出力するための記号。
日付を6桁でリネームする
ren hoge.csv %date:~2,2%%date:~5,2%%date:~8,2%_result.csv
日付を環境変数から取得して加工するのがポイント。
CSVファイルをどんどん下に結合していく
copy /b %~dp0\*.csv %~dp0\result.csv
%~dp0
はカレントディレクトリを示す。絶対に覚えなければいけないスニペット。
CSVから指定の列だけ取り出す
for /f "tokens=1,3 delims=," %%i in (hoge.csv) do echo %%i,%%j >> result.csv
CSVのサイズに制限がありますが、上の例だと1列目と3列目を取り出す。
テキストファイルの名簿を元にフォルダを生成する
pushed %~dp0
for /f %%i in (namelist.txt) do mkdir %%i
exit
これはバッチファイルで実行してください。pushed
の使い方が重要です。
その他に覚えておくといいこと
ワンライナーではないですが、バッチファイルを書くときに覚えておくといいことがあります。
-
@echo off
をバッチファイルの冒頭に書くことで無駄な出力を止めることができる。 - 文の初めに
rem
をつけるとその文はコメント行扱い。
ユーザ入力を変数に格納する
set /P NAME="テキスト文"
NAME
という変数に入れることにユーザの入力した内容を格納することができます。変数を使うときには%NAME%のように%
で囲む必要があります。