きったんの頭ん中☆
コマンドプロンプト/バッチファイル
Windowsのコマンドラインインタプリタ cmd.exe
> ver
Microsoft Windows [Version 6.0.6002]
サンプル
出力
コンソール出力しない
@echo off
ファイルの内容を1ページずつ出力
type some.txt | more
標準出力をファイルに書き込み
echo SampleString> output.txt rem 上書き
echo.>> output.txt rem 改行を追加
標準エラー出力をファイルに書き込み
SomethingError.exe 2> err.log
空のファイルを作成
type NUL>blank.txt
エスケープ
記号
echo ^ ^> ^<
> <
改行
some.exe ^
-opt1=foo ^
-opt2=bar
コマンドライン引数
for %%i in (%*) do (
echo %%i
)
ヘルプ
ヘルプを表示
help
ヘルプのヘルプ情報を表示
help help
help /?
サブルーチン
@echo off
call :func option1
exit /b
:func
echo %1
goto :EOF
計算
set /a n = 2*3 + 1
echo %n%
set /a n += 1
echo %n%
set /a n ^>^> = 1
echo %n%
if %n% gtr 0 (
echo %n% ^> 0
) else (
echo %n% ^<= 0
)
set r=%random%
echo %r%
エラー処理
call foo.bat
if not %ERRORLEVEL% == 0 (
echo error: %ERRORLEVEL% 1>&2
exit /b %ERRORLEVEL%
)
ファイル名に日付
@echo off
setlocal
set DATESTR=%date:~-10,4%%date:~-5,2%%date:~-2,2%
set FNAME=sample%DATESTR%
echo sample log> "%FNAME%.log"
ファイル更新
古いテキストファイルのみ更新
replace *.txt backup /u
新規テキストファイルをコピー
replace *.txt backup /a
※backupディレクトリが見つからない場合はエラー
ファイル比較
相違点(+前後の行)を行番号とともに表示
fc /a /n a.txt b.txt
行単位の並べ替え
入力ファイル data.txt
nana
Nana
7
1234567
実行
sort data.txt
出力
1234567
7
nana
Nana
文字列置換
rem 日付の / を - にして表示
echo %date%
echo %date:/=-%
delayedexpansion
template.txt
1 2 3 4 5 6 !N!
rep.bat
@echo off
if "%1"=="" goto :EOF
setlocal enabledelayedexpansion
set N=%1
(for /f "delims=" %%A in (template.txt) do @echo.%%A)>replaced.txt
実行
rep 奈々
replaced.txt
1 2 3 4 5 6 奈々
.jsファイルをマージ
mergejs.bat
@echo off
if "%1" == "" (
echo merge .js files.
echo.
echo ^ ^ mergejs [filename]
goto :EOF
)
for %%i in (*.js) do (
type %%i >> %1
)
NaturalDocs
@echo off
setlocal
set TARGET=C:\Documents\SampleProject
set DOCS=%TARGET%\docs
rem ディレクトリがなければ作る
if not exist %DOCS% mkdir %DOCS%
perl NaturalDocs -i %TARGET%\src -o HTML %DOCS% -p %TARGET% %1
rem Explorer で開く
start explorer %DOCS%
exit /b
演算子
() | グループ化
|
! ~ - | 単項演算子
|
* / % | 算術演算子
|
+ - | 算術演算子
|
<< >> | 論理シフト
|
& | ビット演算子 AND
|
^ | ビット演算子排他的 OR
|
| | ビット演算子 OR
|
= *= /= %= += -= &= ^= |= <<= >>= | 代入
|
, | 式の区切り記号
|
比較
EQU | 等しい
|
NEQ | 等しくない
|
LSS | より小さい
|
LEQ | 以下
|
GTR | より大きい
|
GEQ | 以上
|
動的環境変数
%CD% | 現在のディレクトリ文字列
|
%DATE% | DATE コマンドと同じフォーマットで現在の日付
|
%TIME% | TIME コマンドと同じフォーマットで現在の時刻
|
%RANDOM% | 0 から 32767 の間の任意の 10 進数
|
%ERRORLEVEL% | 現在の ERRORLEVEL の値
|
%CMDEXTVERSION% | 現在のコマンド プロセッサ拡張機能のバージョン番号
|
%CMDCMDLINE% | コマンド プロセッサを起動したオリジナル コマンド ライン
|
%HIGHESTNUMANODENUMBER% | このコンピューター上の最大の NUMA ノード番号
|
バッチパラメータ
%~1 | 引用句なし
|
%~f1 | 完全修飾パス名
|
%~d1 | ドライブ名
|
%~p1 | パス
|
%~n1 | ファイル名
|
%~x1 | ファイル拡張子
|
%~s1 | 展開されたパスはMS-DOSの「8.3形式」でも短い名前だけを含む。
|
%~a1 | ファイル属性
|
%~t1 | ファイルの日付・時刻
|
%~z1 | ファイルサイズ
|
%~$PATH:1 | PATH環境に指定されているディレクトリを検索し、最初に見つかった完全修飾名に%1を展開、または空の文字列。
|
バッチファイルのあるディレクトリに移動
cd /d %~dp0
部分文字列
%S:~m% | m文字目以降
|
%S:~m,n% | m文字目からn文字分
|
%S:~m,-n% | m文字目から最後のn文字分を除いたもの
|
%S:~-m% | 後ろからm文字目以降
|
%S:~-m,n% | 後ろからm文字目からn文字分
|
%S:~-m,-n% | 後ろからm文字目から最後のn文字分を除いたもの
|
例
set S=123456789
echo %%S%% = %S%
echo %%S:~2%% = %S:~2%
echo %%S:~2,3%% = %S:~2,3%
echo %%S:~2,-3%% = %S:~2,-3%
echo %%S:~5%% = %S:~5%
echo %%S:~5,3%% = %S:~5,3%
echo %%S:~5,-3%% = %S:~5,-3%
出力
%S% = 123456789
%S:~2% = 3456789
%S:~2,3% = 345
%S:~2,-3% = 3456
%S:~5% = 6789
%S:~5,3% = 678
%S:~5,-3% = 6
リンク