* DOSコマンド [#e1fe2151] #setlinebreak(on); #contents ** バッチファイルの制御用コマンド [#x44b1c2a] |コマンド|説明|h |@|現在行の画面への表示抑止| |:(ラベル)|ラベル| |%0〜%9|パラメータの参照| |%環境変数名%|環境変数の参照| |%%文字|バッチ・プログラム内の変数| |( )|一連のコマンドをグループ化| |&&|前のコマンドが成功した場合だけ実行| ||||前のコマンドが失敗した場合だけ実行| |&|1行中の複数のコマンドの区切り| |^|エスケープ文字。&br;……@,&,%,^などを「文字そのもの」として使用したい場合に直前につける| |; (セミコロン)|パラメータの区切り| |, (カンマ)|パラメータの区切り| |CALL|他のバッチ・プログラムの呼び出し| |CALL :SUB|同一バッチファイル内サブルーチン呼び出し| |ECHO|画面へのメッセージ表示| |ENDLOCAL|環境変数のローカライズを終了する| |FOR..IN(..)DO|繰り返し| |GOTO|分岐| |IF|条件比較| |ELSE|条件が偽である場合の処理の指定| |PAUSE|処理の停止| |REM|コメント| |SETLOCAL|環境変数のローカライズ| |SHIFT|参照パラメータの繰り上げ| &br; ** パラメータ参照方法の拡張 [#vf927afe] |パラメータ|説明|h |%~1|引用句 (") があればそれを削除する| |%~f1|完全修飾パス名を得る| |%~d1|ドライブ文字を得る| |%~p1|パス名だけを得る| |%~n1|ファイル名だけを得る| |%~x1|拡張子だけを得る| |%~s1|短い名前を得る| |%~a1|ファイルの属性を得る| |%~t1|ファイルのタイムスタンプを得る| |%~z1|ファイルサイズを得る| &br; ** Windowsサービス登録・削除 [#n43693e8] #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;">) C:>sc create myservice binPath= "C:\xxxxxx\myservice.exe" C:>sc delete myservice #html(</td></tr></table>) ** 開いているポートを調べる [#u769797d] #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;">) netstat -an #html(</td></tr></table>) ** nslookupを使用してDNSサーバの設定の状態を調べる】 [#h72b6db1] 《構文》 #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;">) nslookup -type=xxxx ドメイン名 DNSサーバ #html(</td></tr></table>) 《使用例》 #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;">) REM ネームサーバを調べる nslookup -type=ns example.com REM MXレコードを調べる nslookup -type=mx example.com REM CNAMEレコードを調べる nslookup -type=cname example.com REM TXTレコードを調べる nslookup -type=txt example.com #html(</td></tr></table>) ** 遅延環境変数を使用した置換(変数の値を別の変数の値で置換する) [#jec8fd57] #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;">) set var1=ABC set varBF=A set varAF=a setlocal ENABLEDELAYEDEXPANSION echo !var1:%varBF%=%varAF%! endlocal #html(</td></tr></table>) ** 代替Linuxコマンド [#v0b33e41] #html(<div style="padding-left:20px;">) *** 行数を数える(wc -l) [#u91d12f6] #mycode{{ for /F "usebackq" %a in (`type ファイル名 ^| find /C /V ""`) do echo %a }} *** 実行中プロセスの表示(ps) [#edcdf7fe] #mycode{{ tasklist }} *** コマンドの実行結果を変数にセットする [#re7aed5b] #mycode{{ REM 変数nowdateに日付をセットする for /F "usebackq" %t in (`echo %date:/=%`) do set nowdate=%t }} *** コマンドの実行結果を変数にセットする(フィルタ使用) [#s5ab0b19] #mycode{{ REM 変数cntに実行中の notepad.exe の数をセットする for /F "usebackq" %t in (`tasklist /NH /FI "IMAGENAME eq notepad.exe" ^| find /C /V ""`) do set cnt=%t }} *** grep [#o3bab086] #mycode{{ findstr "検索文字列" ファイル名 }} *** cat [#b2146a80] #mycode{{ type ファイル名 }} *** tail [#w6e03209] #mycode(){{ @echo off set filename=%1% set cnt=%2% if "%cnt%" == "" set cnt=10 REM 行数のカウント set linecnt=0 for /F "tokens=*" %%a in (%filename%) do set /A linecnt+=1 REM 行の表示 set /A startline=%linecnt% - %cnt% set linecnt=0 for /F "tokens=*" %%a in (%filename%) do call :disp_rec %%a goto :eof :disp_rec set /A linecnt+=1 if %linecnt% GTR %startline% echo %*% goto :eof :eof }} *** tail -f[#w6e03209] #mycode(){{ @echo off set file=%1% set start_line=0 set pre_cnt=0 set pre_start_line=0 set linecnt=0 for /F "tokens=*" %%a in (%file%) do set /A linecnt+=1 set /A pre_cnt=%linecnt%-10 :main set linecnt=0 for /F "tokens=*" %%a in (%file%) do set /A linecnt+=1 if "%linecnt%" GTR "%pre_cnt%" set /A start_line=%pre_cnt% if "%pre_start_line%" EQU "%start_line%" sleep 1 & goto :main set cnt=0 for /F "tokens=*" %%a in (%file%) do call :disp_line %%a set pre_start_line=%start_line% set pre_cnt=%linecnt% sleep 1 goto :main :disp_line set /A cnt+=1 if %cnt% GTR %start_line% echo %*% goto :eof :eof }} *** tee[#w6e03209] #mycode(){{ @echo off set file=%1% del %file% for /f "tokens=* delims=" %%i in ('@findstr /R .*') do @echo.%%i && @echo.%%i>>%file% }} #html(</div>)