#author("2019-08-27T15:19:53+00:00","","") * DOSコマンド [#e1fe2151] #setlinebreak(on); #contents ** バッチファイルの制御用コマンド [#ba17d50b] |コマンド|説明|h |@|現在行の画面への表示抑止| |:(ラベル)|ラベル| |%0〜%9|パラメータの参照| |%環境変数名%|環境変数の参照| |%%文字|バッチ・プログラム内の変数| |( )|一連のコマンドをグループ化| |&&|前のコマンドが成功した場合だけ実行| ||||前のコマンドが失敗した場合だけ実行| |&|1行中の複数のコマンドの区切り| |^|エスケープ文字。&br;……@,&,%,^などを「文字そのもの」として使用したい場合に直前につける| |; (セミコロン)|パラメータの区切り| |, (カンマ)|パラメータの区切り| |CALL|他のバッチ・プログラムの呼び出し| |CALL :SUB|同一バッチファイル内サブルーチン呼び出し| |ECHO|画面へのメッセージ表示| |ENDLOCAL|環境変数のローカライズを終了する| |FOR..IN(..)DO|繰り返し| |GOTO|分岐| |IF|条件比較| |ELSE|条件が偽である場合の処理の指定| |PAUSE|処理の停止| |REM|コメント| |SETLOCAL|環境変数のローカライズ| |SHIFT|参照パラメータの繰り上げ| &br; ** パラメータ参照方法の拡張 [#yec63905] |パラメータ|説明|h |%~1|引用句 (") があればそれを削除する| |%~f1|完全修飾パス名を得る| |%~d1|ドライブ文字を得る| |%~p1|パス名だけを得る| |%~n1|ファイル名だけを得る| |%~x1|拡張子だけを得る| |%~s1|短い名前を得る| |%~a1|ファイルの属性を得る| |%~t1|ファイルのタイムスタンプを得る| |%~z1|ファイルサイズを得る| &br; ** Windowsサービス登録・削除 [#u74888ec] #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;padding:0px 10px 0px 10px;">) C:>sc create myservice binPath= "C:\xxxxxx\myservice.exe" C:>sc delete myservice #html(</td></tr></table>) &br; ** nslookupを使用してDNSサーバの設定の状態を調べる [#s8400e93] 《構文》 #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;padding:10px;">) nslookup -type=xxxx ドメイン名 DNSサーバ #html(</td></tr></table>) 《使用例》 #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;padding:0px 10px 0px 10px;">) ## ネームサーバを調べる nslookup -type=ns example.com ## MXレコードを調べる nslookup -type=mx example.com ## CNAMEレコードを調べる nslookup -type=cname example.com ## TXTレコードを調べる nslookup -type=txt example.com #html(</td></tr></table>) ** for文を使用してファイルやディレクトリの一覧を取得する [#edcac9b3] #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;padding:0px 10px 0px 10px;">) ## ファイル一覧の取得 @for /R %i in (*) do @echo %~fi ## ディレクトリ一覧の取得 @for /D /R %i in (*) do @echo %~fi #html(</td></tr></table>) ** キーボードからの値入力を受け付ける [#x371543e] #html(<table><tr><td width="20"></td><td style="padding:0px;">input.cmd</td></tr></table>) #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;padding:0px 10px 0px 10px;">) @echo off echo 値を入力して下さい set /p var= echo 入力値は%var%です #html(</td></tr></table>) ** 開いているポートを調べる [#u769797d] #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;">) netstat -an #html(</td></tr></table>) ** サーバのポートが開いているか調べる [#n8a379bc] #html(<table><tr><td width="20"></td><td style="background:#000000;color:white;padding:0px 10px 0px 10px;">) netsh diag connect iphost IPアドレス ポート番号 #html(</td></tr></table>) ** 簡単な文字列の置換 [#if483cc4] #html(<div style="padding-left: 10px;">) simple_replace.bat #mycode2(){{ @echo off set before="Hello World!" set after=%before:World=Test% echo %before% echo %after% }} #html(</div>) ** 正規表現を使用した文字列の置換 [#taa7f239] #html(<div style="padding-left: 10px;">) for と powershell を利用して正規表現での文字列置換を行う test_replace.bat #mycode2(){{ @echo off set target="C:\Program Files\R\R-3.5.3\bin\Rscript.exe" set version= for /F "usebackq delims=," %%i in (`powershell -Command "& { $txt = $Args -join ''; $txt -replace '.+[^0-9]([0-9]+\.[0-9]+\.[0-9]+)[^0-9].+','$1'} %target% "`) do set version=%%i echo %target% echo %version% }} #html(</div>) ** 遅延環境変数を使用した置換(変数の値を別の変数の値で置換する) [#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] for /F "usebackq" %a in (`type ファイル名 ^| find /C /V ""`) do echo %a *** 実行中プロセスの表示(ps) [#edcdf7fe] tasklist *** コマンドの実行結果を変数にセットする [#re7aed5b] REM 変数nowdateに日付をセットする for /F "usebackq" %t in (`echo %date:/=%`) do set nowdate=%t *** コマンドの実行結果を変数にセットする(フィルタ使用) [#s5ab0b19] 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] findstr "検索文字列" ファイル名 *** cat [#b2146a80] type ファイル名 *** tail [#w6e03209] @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] @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] @echo off set file=%1% del %file% for /f "tokens=* delims=" %%i in ('@findstr /R .*') do @echo.%%i && @echo.%%i>>%file% #html(</div>)