- 追加された行はこの色です。
- 削除された行はこの色です。
#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 を利用して正規表現での文字列置換を行う
for の "usebackq" と 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
#mycode2(){{
for /F "usebackq" %a in (`type ファイル名 ^| find /C /V ""`) do echo %a
}}
*** 実行中プロセスの表示(ps) [#edcdf7fe]
tasklist
#mycode2(){{
tasklist
}}
*** コマンドの実行結果を変数にセットする [#re7aed5b]
REM 変数nowdateに日付をセットする
for /F "usebackq" %t in (`echo %date:/=%`) do set nowdate=%t
#mycode2(){{
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
#mycode2(){{
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 "検索文字列" ファイル名
#mycode2(){{
findstr "検索文字列" ファイル名
}}
*** cat [#b2146a80]
type ファイル名
#mycode2(){{
type ファイル名
}}
*** tail [#w6e03209]
@echo off
set filename=%1%
set cnt=%2%
if "%cnt%" == "" set cnt=10
#mycode2(){{
@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 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
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
:disp_rec
set /A linecnt+=1
if %linecnt% GTR %startline% echo %*%
goto :eof
:eof
}}
*** tail -f[#w6e03209]
@echo off
set file=%1%
#mycode2(){{
@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
}}
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%
#mycode2(){{
@echo off
set file=%1%
del %file%
for /f "tokens=* delims=" %%i in ('@findstr /R .*') do @echo.%%i && @echo.%%i>>%file%
}}
#html(</div>)