* 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;">)
&nbsp;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>)


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS