繰り返し

1 – 10 までを 1づつインクリメントして、echoする。「L」はLoopのLっぽい。

for /L %i in (1,1,10) do echo %i

複数行

for /L %i in (1,1,10) do (
echo "abc"
echo %i
)

コマンドの実行結果を受け取る
パイプを使うときはハットでエスケープ

for /f %v in ('dir /b ^| findstr csv ') do (
    echo %v
)

尚、バッチで書くときは 変数前を%%として、usebackquote を併用する

for /f %%v in ('dir /b') do (
    echo %%v
)

複数コマンドを出力結果として受け取る

for /f %v in ('echo a ^& echo b') do (echo %v)

ファイル読み込み

for /f %%v in (a.txt) do (
    echo %%v
)

csvファイルを読み込む

for /f "eol=; tokens=1,2 delims=," %%x in (a.txt) do (
    echo %%x ; %%y
)

指定文字をループ

for %%v in (a b c d) do (
    echo v=%%v
)

配列的なループ

set arr=a b c d
for %%v in (%arr%) do (
    echo v=%%v
)

こちらを参照
http://blog.livedoor.jp/moya_pro/archives/32153417.html

ファイルの行数

type tmp.txt | find /v /c ""

普通は↓コレだが、これは最後の行が改行のみだった場合に、カウントされない。

find /v /c "" tmp.txt

ファイル検索

where コマンド

dir *.txt/s/b

grep

findstr /s /i "foo" *.csv

文字列置換

「a」を「b」に変換

echo %v:a=b%

日付の計算

できなくもないが、お勧めできない方法。煩雑。
http://www.atmarkit.co.jp/ait/spv/0405/01/news002.html

タスク確認 / 終了

tasklist
taskkill /IM notepad.exe

タスクスケジューラーの登録

schtasks /create /RU {USER} /RP {PASS} /tn "task_name1" /tr I:foo.vbs /sc ONCE /st 09:00:00

cut

PS D:\> type .\a.txt
1a,b,c
2x,y,z
PS D:\> type .\a.txt | convertfrom-csv -Delimiter "," -Header(1..3)

1                                       2                                       3
-                                       -                                       -
1a                                      b                                       c
2x                                      y                                       z

power shell

http://qiita.com/cd01/items/da9a36582372e7d0a7f6