変数セット
set hoge=hello world
(=の前後に空白入れない)
式の結果をセットしたい場合は
set /a
変数展開
echo %hoge%
(forで利用の場合%%)
ファイルへの書込み
>
上書き
>>
追記
パス指定方法
・バッチでよく使う”%~dpnx1″について
%0 :バッチファイル自身
%1 :ドラッグしたファイル
~ :ダブルクォートを除く
d :ドライブ名
p :パス名
n :ファイル名
x :拡張子
フルパス
%0
ファイル名(拡張子有)
%~n0%~x0
ファイル名(拡張子無)
%~n0
拡張子
%~x0
ディレクトリ
%~dp0
・使用例
自身のフォルダのパスを追加する。
set PATH=%~dp0;%PATH%
バッチと同じ場所にあるindex.htmlを開く。
start chrome %~dp0index.html
上の階層にあるファイルに書き込み。
set text=Hello World
echo %text%> %~dp0\..\_Path.txt
ファイル名を日付にする方法
set ymd=%date:~0,4%%date:~5,2%%date:~8,2%
文字コード
chcp xxx
Shift JIS:932
EUC-JP:20932
UTF-8:65001
タスクの一覧
・タスクの一覧ファイルを作る方法。
tasklist > a.txt
・タスクの終了
taskkill /f /im chrome.exe
(imはイメージ名で指定)
ショートカット
Win+R>cmd>cd Desktop
とするような場合、
デスクトップにショートカット作成し、
cmd
と入力し、プロパティの作業フォルダを空にする。
(ファイルの場所がカレントディレクトリになる)
あるいは、フォルダに対してShiftを押しながら右クリックして、
PowerShell ウィンドウをここで開く
が一番簡単かも。
for文
for オプション 変数1文字 in (対象) do コマンド
あるいは、
for オプション 変数1文字 in (対象) do (
コマンド
)
のように改行もできる。
Lオプション (値増加)
for /L %%i in (開始,増加量,終了) do
オプション無し(ファイル対象)
for %%i in (*.txt) do
Dオプション(フォルダ対象)
for /d %%i in (*) do
変数に付く%記号は、バッチで使う場合は%%、コマンドプロンプトからの場合は%となるので注意。また通常の環境変数とも違うので注意。
・forの中で変数展開する場合
setlocal enabledelayedexpansion~endlocal
で!を利用するできるが、ファイル名に!があると駄目。
サブルーチン化でも可。
for %%i in (*) do (
call :sub
)
pause
exit
:sub
exit /b
置換
変数名:置換対象の文字列=置換後の文字列
set p=%~dp0
echo datadir = %p:\=/% >> test.txt
のような感じ
for文の中での置換
for %%i in (*.mkv) do (
set x=%%i
set y=!x:mkv=mp4!
)
バッチファイルサンプル
arp -a xxx
IPアドレスとMACアドレスの対応のキャッシュを表示する。
echo off
結果のみ表示したい場合
・カレントディレクトリのファイル一覧
1 2 3 4 5 6 7 |
@echo off for %%i in (*) do ( echo %~dp0%%i ) pause |
・カレントディレクトリの移動
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
@echo off doskey ls = dir /a echo 1. Android Tools echo 2. Android Projects (explorer) echo 3. wwwroot (explorer) echo 4. NetBeans Projects (explorer) set /P i="" if "%i%" == "1" ( cmd /k cd /d "C:\android-sdk-windows\platform-tools" ) if "%i%" == "2" ( explorer "C:\Users\s.okamura\AndroidStudioProjects" ) if "%i%" == "3" ( explorer "D:\Dropbox\workspace\wwwroot" ) if "%i%" == "4" ( explorer "C:\Users\s.okamura\Documents\NetBeansProjects" ) |
・LameにWavを渡す
1 2 3 4 5 6 7 8 9 10 |
@echo off cd /d %1 for %%b in (*.wav) do "C:\MyWork\Utility\Lame 3.97\lame.exe" "%%b" -b 192 mkdir backup move *.wav ./\backup for %%c in (*.mp3) do ren "%%c" "%%~nc" for %%d in (*.wav) do ren "*.wav" "*.mp3" dir > list.txt "C:\MyWork\Utility\PsKill 1.12\pskill" conime.exe pause |
・Ping送信
1 |
for /L %%i in (10,1,15) do ping -n 1 -w 20 192.168.102.%i >> a.txt |
・Pingでアドレスの一覧
1 |
for /L %i in (1,1,254) do ping -w 200 -n 1 192.168.11.%i > nul && arp -a 192.168.11.%i |