リファレンス(Reference)
カテゴリ別
FileSystem
__LINK__(attrib)
__LINK__(copy)
__LINK__(mkdir)
__LINK__(dir)
__LINK__(del)
__LINK__(rename)
__LINK__(xcopy)
__LINK__(mklink)
LINK TO GL TEST
__LINK__(nconvert)
network
__LINK__(net use)
utility
__LINK__(chkdsk)
__LINK__(mem)
commmadprompt
__LINK__(title)
__LINK__(color)
__LINK__(cls)
bat.program
__LINK__(pause)
__LINK__(setlocal)
__LINK__(exit)
__LINK__(goto)
process
__LINK__(tasklist)
__LINK__(taskkill)
assoc
SYNTAX
assoc EXTENSION
DESC
ファイルを拡張子ごとに実行プログラムと関連づける。
現在の対応一覧をみる
assoc
.htm ファイルのプログラムを見る。
assoc .htm
.htm ファイルのプログラムを見る。
assoc .htm=Chrome
ftype
DESC
ファイル・タイプ名に対して、起動するコマンドを定義する。
REF
http://www.atmarkit.co.jp/fwin2k/win2ktips/841ftypes/ftypes.html
FTYPE [ ファイル タイプ[=[コマンド文字列]] ]
attrib
SYNTAX
attrib
DESC
ファイル属性を変更する
// Read Only
attrib +R foo.txt
// 解除
attrib -R foo.txt
call
SYNTAX
call batfile
DESC
batch を他の batch から呼び出す
呼び出された側のバッチの処理が終わると
元の呼び出した側のバッチファイルへ制御をもどすことができる。
POINT
call を利用すると呼び出し元のプロセスに戻ってくる。
call を利用しないで bat をよぶと
呼び出された側のバッチファイルが終了時点でとまり元のバッチに戻らない。
call foo.bat
foo.bat
同じPROCESSで実行される
"start" は 別プロセスで実行される
// TaskManager > [プロセス] でみると確認できる
start test.bat
call test.bat
clip . clipboard . クリップボード
DESC
stdout への出力を クリップボードにコピーする。
dir | clip
choice.dialog . ダイアログ
Yes / No をダイアログする
cd(chdir)
SYNTAX
cd [op] dir
DESC
Directory の移動
OP
D: path に Drive が含まれる場合は, drive も変更.
C:\test> chdir /D d:\test
c:\> cd WINDOWS
c:\WINDOWS> cd c:\Documents and Settings
c:\WINDOWS> cd "c:\Documents and Settings"
cmd
DESC
cmd( Interpreter )を ChildProcess として起動する
ProcssExplorer で見ると 階層化するのが見える
OP
k : Boot 時にコマンドをフック
c : コマンドのみ実行をして Interpreter を終了
POINT
起動設定をしておく
すべてのプログラム > アクセサリ > CommmandPrompt > Property
各タブで設定
(.) Color
(.) Size
(.) WorkingDirectory
%SystemRoot%\system32\cmd.exe /f:on /k "chcp 65001"
%SystemRoot%\system32\cmd.exe /f:on /k "D: && cd D:\test"
%SystemRoot%\system32\cmd.exe /f:on /k "echo aaa && echo bbb"
%SystemRoot%\system32\cmd.exe /f:on /k "telnet && open localhost"
cmd /?
cmd /? > cmdhelp.txt
cmd /K echo "foobar"
cmd /C mdkir foobar;
cmd /C "`cygpath -w /test/doc/doc.ods`"
test.bat
type test.bat
echo test
C:
cd c:\
test.bat
test
C:\>
mkdir foobar;
cls
SYNTAX
cls
DESC
プロンプト画面を clear する
color
DESC
Console の色を指定する
2 桁の 16 進数で指定する
SYNTAX
color BGFG
color 0F
color
cscript
SYNTAX
CScript scriptname.ext [op] [arg]
DESC
指定した Script を Console mode で実行する
OP
B : Batch Mode で実行
X : MS Debugger がインストールされていればデバッガでスクリプトを実行
test.js
// CScript が実行すると STDOUT へ出力
WScript.echo( "test" );
// Silent Mode
// RET: test
CScript /NoLogo "d:\test\dust\test.js"
// Batch mode では何も出力されない
CScript /NoLogo /B "d:\test\dust\test.js"
Cygwin から実行
// RET: TEST
CScript /NoLogo "d:\test.js" | tr [:lower:] [:upper:]
batch.js
// Batch Mode では, 何も出力されない
WScript.echo( "start" );
// batch では ここでとまる
foobar;
sh = new ActiveXObject( "WScript.shell" );
WScript.echo( "end" );
chkdsk
SYNTAX
chkdsk [op]
DESC
ディスクをチェックし状態を表示する
発見したエラーの修復も可能
chkdsk /R
chkdsk /F
chcp
SYNTAX
chcp codepage
DESC
Change CodePage
CommandPrompt( terminal )の文字コードを変更する
ApacheやSubversionなどUTF-8で出力するアプリをコマンドプロンプトから使うと
メッセージが文字化けするときに変更する
437 IBM437 OEM United States
932 shift_jis ANSI/OEM Japanese; Japanese (Shift-JIS)
1200 utf-16 Unicode UTF-16, little endian byte order (BMP of ISO 10646);
available only to managed applications
20127 us-ascii US-ASCII (7-bit)
20932 EUC-JP Japanese (JIS 0208-1990 and 0121-1990)
50220 iso-2022-jp ISO 2022 Japanese with no halfwidth Katakana;
Japanese (JIS)
50222 iso-2022-jp ISO 2022 Japanese JIS X 0201-1989;
Japanese (JIS-Allow 1 byte Kana - SO/SI)
51932 euc-jp EUC Japanese
65001 utf-8 Unicode (UTF-8)
chcp 65001
chcp 932
chcp 65001
type utf16.txt > utf8.txt
copy
SYNTAX
cp src dst
date
SYNTAX
date [op]
DESC
日付を取得する
date /t
del
SYNTAX
del [op] [File ...]
del [op] [Directory ...]
DESC
指定ファイルを消去
指定ディレクトリ内のファイルを消去
OP
P : Prompt を消す前に表示
S : SubDirectory も含めてすべての指定ファイルを削除
A : Attribute 消すファイルの属性を指定する
del /P *
del /S /P *.txt
del /S *.jpg *.png *.htm *.css
del /A:H c:\pagefile.sys
del c:\pagefile.sys
WARNING
Directory 自身は削除できない
"rmdir" を使う
rmdir Directory
dir
SYNTAX
dir [op]
DESC
ディレクトリのファイルの一覧を表示
dir C:\
dir
dir /Q
dir /w
dir *.txt
dir /B
dir /A
dir /O*
dir /OD
echo
SYNTAX
echo [message]
echo [ON|OFF]
DESC
Message を表示する
echo ON
echo OFF
echo
echo. %tmp%
expand . unexpand . tabfy
タブをスペースに変換する。
expand test.txt
exit
SYNTAX
exit [/B] [ExitCode]
DESC
Script, Interpreter を終える
バッチ処理を途中で終えたいときに便利
if %ERRORLEVEL% == 1 (
exit /B
)
POINT
/B をつけないとインタープリタ自体が閉じる
コマンドプロンプトを閉じないようするには /B をつけてバッチスクリプトを中断する。
echo start main.bat
call sub.bat
echo end main.bat
exit
FC
SYNTAX
FC fileA fileB
DESC
File Compare
ファイルを比較する
fc foo.txt bar.txt
find.findstr.grep
指定した文字列のみを抽出する
findstr は正規表現を使った検索ができる。
type test.txt | findstr "test"
tasklist | findstr iexplore
goto
SYNTAX
goto label
DESC
label の行に処理を移動する。
goto error
:error
help
SYNTAX
help
DESC
コマンドリファレンス
mem
DESC
メモリ使用状況をチェック
SYNTAX
mem
mem
mkdir
SYNTAX
mkdir [Drive:]Path
DESC
ディレクトリを作成する
mkdir c:\foo
mkdir c:\oya\ko\mago
cmd /e:on
cmd /e:off
mkdir c:\oya\ko
mklink
SYNTAX
mklink link target
DESC
SymbolicLink を作成
mklink /d test d:\tmp
net use . NetworkDrive
SYNTAX
NET USE [デバイス名 | *] [パスワード | *] [/home]
DESC
別PC( ファイルサーバなど )の共有フォルダを
自分の PC のドライブに割りあてる
net use K: \\hostname\dir password /user:username
WARNING
Driveletter の後は : をつけること
net use K \\hostname\dir password /user:username
net use K: \\hostname\dir password /user:username
net use z: /DELETE
net use K: \\mypc\share
net use
ステータス ローカル名 リモート名 ネットワーク名
-------------------------------------------------------------------------------
OK K: \\mypc\share Microsoft Windows Network
tracert . traceroot
指定したホストまでの経路を表示する。
tracert www.google.com
家の PC では PrivateAddress であるルーターに最初に通信する。
1 <1 ms <1 ms <1 ms 192.168.24.1
ISP に接続する
1 <1 ms <1 ms <1 ms xxx.xxx.xx.x
net localgroup
SYNTAX
net localgroup
DESC
PC local の group を表示する
\\host のエイリアス
-------------------------------------------------------------------------------
*Administrators
*Backup Operators
*Guests
*HelpServicesGroup
*Network Configuration Operators
*Power Users
*Remote Desktop Users
*Replicator
*Users
Administrators でできること
[.] Local User( Account )作成
net user . UserList AccountList
SYNTAX
net user
DESC
user の一覧を表示
Administrator は System 標準の user
Administrators は Group 名
POINT
user ごとに 細かい Permission 制御をする
Guest は アカウントをもたない来客用のアカウント。
Tool > FolderOption > 簡易ファイルの共有を OFF にする
\\host のユーザー アカウント
-------------------------------------------------------------------------------
Administrator ASPNET Guest
HelpAssistant test sshd
SUPPORT_388945a0
net(start|stop)
DESC
Service を制御する
// Tomcat を停止する
net stop "Apache Tomcat"
// Tomcat 起動する
net start "Apache Tomcat"
netsh
netsh firewall show stat
nbtstat
SYNTAX
nbtstat [-a RemotePC] [-A IpAddress]
DESC
プロトコルの統計情報と
NBT (TCP/IP 上の NetBIOS) を使う現在の TCP/IP 接続を表示
nbtstat -a 192.168.0.2
ローカル エリア接続:
Node IpAddress: [192.168.0.2] Scope Id: []
NetBIOS Remote Machine Name Table
Name Type Status
---------------------------------------------
hostname <00> UNIQUE Registered
WORKGROUP <00> GROUP Registered
hostname <20> UNIQUE Registered
MAC Address = XX-XX-XX-XX-XX-XX
nbtstat -c
ローカル エリア接続:
Node IpAddress: [192.168.0.2] Scope Id: []
No names in cache
nbtstat -R
Successful purge and preload of the NBT Remote Cache Name Table.
pause
SYNTAX
pause
DESC
停止して prompt 状態にする
reg
SYNTAX
reg subcommand key [opt]
reg query KEY [/v VAL | /ve] [/s]
reg add KEY [/v VAL] [/t TYPE] [/d DATA] [/f]
DESC
レジストリの編集、値の参照をする。
POINT
Key とは Directory のこと
Entry とは 値のこと
5 つの ROOT Key からなる
// SubKey 追加
reg add hkcu\test
// SubKey 削除
reg delete hkcu\test /f
// Key 以下のすべてを Query
//
reg query hkcu\Software\CDDB
// Entry のみを Query
reg query hkcu\Software\CDDB /v xxx
// Key を追加
//
reg add hkcu\Software\test /f
// 値を設定
// Windows の Baloon Point を OFF にする
//
reg add hkcu\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
/v EnableBalloonTips /t REG_DWORD /d 0 /f
ren(rename)
SYNTAX
ren [DRIVE:][PATH]src dst
DESC
ファイル名を変更する
WARNING
変更後のパスの指定はできない。名前だけを指定する
ren c:/src.txt c:/dst.txt
ren c:/src.txt dst.txt
robocopy
SYNTAX
robocopy [OPT] src dst
DESC
リモートのファイル・サーバ同士でフォルダを同期させる。
rsync のウィンドウズ版
POINT
特定のディレクトリのバックアップに利用できる。
robocopy c:\src d:\dst
コピーするファイル名をパターンマッチさせる
robocopy c:\src d:\dst *.txt
robocopy c:\src d:\dst *.txt *.jpg
完全にミラーリング(同期)すると src にないファイルは dst からも削除される
robocopy /mir c:\src d:\dst
ログを制御する
robocopy /NP c:\src d:\dst
sc
SYNTAX
sc [HOST] COMMAND [NAME] [KEY= VAL]
DESC
サービスのコントロールをする。
// サービス一覧をみる
sc query
// 停止する
sc stop Tomcat6
// 開始する
sc start Tomcat6
WARNING
KEY= VAL は sace をあけること
sc config サービス名 DisplayName= "DISPNAME"
// Tomcat を登録 ( 表示されるのは "Apache Tomcat 6.0" )
sc create Tomcat6.0 binPath= "D:/tom/bin/tomcat6.exe //RS//Tomcat6" DisplayName= "Apache Tomcat 6.0"
// 削除
sc delete Tomcat6.0
schtasks
DESC
Schedular の設定をする
実行できるのは 管理者のみ
WARNING
login usr account の影響をうける
// 毎朝 4:00 にバックアップ・コマンドを起動
schtasks /create /tn "Backup" /tr c:\windows\backup.cmd /sc daily /st 04:00:00
// listup
schtasks /query
// 削除する
schtasks /delete /tn "Backup"
// prompt なしで削除
schtasks /delete /f /tn "test"
schtasks /delete /f /tn "mus"
// password 指定ですること
schtasks /create /tn "test" /S \\HOSTNAME /U USR /P PASSWORD /tr notepad /sc daily /st 04:00:00
schtasks /create /tn "test" /tr d:\test.bat /sc daily /st 22:47:00
mv "C:/WINDOWS/Tasks/Backup A.job" "C:/WINDOWS/Tasks/Backup test.job"
subst
SYNTAX
subst DRIVE_LETTER: PATH
DESC
任意のディレクトリにドライブレターを割り当てる
subst F: d:\test\
subst F: /d
set
SYNTAX
set [VAR=[VALUE]]
DESC
環境変数 を設定 削除する
set
set var=value
set %var%
set var=value2
WARNING
BAD
set var="Program Files"
OK
set var=Program Files
sleep
sleep コマンドはないため, timeout を利用する。
__LINK__(timeout)
touch
copy /b test.txt +,,
sort
sort test.txt
sort /R test.txt
stdin から受け取る
dir /B | sort
where
PATH の通った場所から指定した実行ファイルのパスを探す。
where sort
where ftp
systeminfo
SYNTAX
systeminfo
DESC
system 情報を表示
ホスト名: xxx
OS 名: Microsoft Windows XP Professional
OS バージョン: 5.1.2600 Service Pack 2 ビルド 2600
OS 製造元: Microsoft Corporation
OS 構成: スタンドアロン ワークステーション
OS ビルドの種類: Uniprocessor Free
登録されている所有者: xxx
登録されている組織:
プロダクト ID: 76494-OEM-0011903-00116
最初のインストール日付: 2007/06/10, 22:29:56
システム起動時刻: 0 日、0 時間、53 分、40 秒
システム製造元: Matsushita Electric Industrial Co.,Ltd.
システム モデル: CF-T5KW4AXR
システムの種類: X86-based PC
プロセッサ: 1 プロセッサインストール済みです。
[01]: x86 Family 6 Model 14 Stepping 8 GenuineIntel ~787 Mhz
BIOS バージョン: PTLTD - 6040000
Windows ディレクトリ: C:\WINDOWS
システム ディレクトリ: C:\WINDOWS\system32
起動デバイス: \Device\HarddiskVolume1
システム ロケール: ja;日本語
入力ロケール: ja;日本語
タイム ゾーン: N/A
物理メモリの合計: 502 MB
利用できる物理メモリ: 69 MB
仮想メモリ: 最大サイズ: 2048 MB
仮想メモリ: 利用可能: 2004 MB
仮想メモリ: 使用中: 44 MB
ページ ファイルの場所: C:\pagefile.sys
ドメイン: HOME
ログオン サーバー: \\xxx
ホットフィックス: 222 ホットフィックスがインストールされています。
ネットワーク カード: 2 NIC(s) インストール済みです。
[01]: Realtek RTL8139/810x Family Fast Ethernet NIC
接続名: ローカル エリア接続
DHCPが有効 : はい
DHCP サーバー: 192.168.0.1
IP アドレス
[01]: 192.168.0.2
[02]: Intel(R) PRO/Wireless 3945ABG Network Connection
接続名: ワイヤレス ネットワーク接続
setlocal.endlocal
DESC
setlocal 〜 endlocal 間で設定, 変更した環境変数をバッチファイル内のみ有効にする
set VAR_GLOBAL=test
echo %VAR_GLOBAL%
cmd> env.bat
set
setlocal
set VAR_LOCAL=aaa
echo %VAR_LOCAL%
endlocal
set VAR_GLOBAL=test
echo %VAR_GLOBAL%
cmd> env.bat
echo %VAR_LOCAL%
echo %VAR_GLOBAL%
POINT
一時的に上書きする
setlocal
path=C:\
ping 65.155.232.10
endlocal
不用意に変数を上書きしないよう
setlocal を bat の Template にしとくといい
setlocal
set a=1
set b=2
set c=3
WARNING
これいれると, この後で定義した変数が展開されない可能性あり
setlocal ENABLEDELAYEDEXPANSION
start
SYNTAX
start [/B] [title] [/d path] [/i] [/min | /max] [/separate | /shared] file
DESC
ファイルパスを指定すると,拡張子に応じたアプリケーションを起動する
( アイコンをダブルクリックをすることと同じ )
実行中のコマンドプロンプトとは別のウィンドウを開き
指定されたコマンド, プログラムを実行します
起動した新たなコマンドプロンプトは
起動元のコマンドプロンプトの環境変数, カレントディレクトリが引き継がれる
■ WARNING WARNING WARNING
以下の表記は問題があるかもしれない。
start /B "D:/work/pro/win32/fw/Debug/fw.exe"
start の対象はこんなもの
(.) Directory
(.) xxx.bat
(.) exe
(.) xxx.exe
(.) file
(.) Windowsプログラムが指定すると(regedit、calc など)
同じプロセスで実行される
実行されたプログラムの動作に関係なく
コマンドプロンプトに戻る
新たなコマンドプロンプトの ウィンドウは開かない
(.) 内部コマンド, バッチファイル
新たなコマンドプロンプトのウィンドウ( Shell )が開き
指定されたコマンドやプログラムファイルが実行される
実行が終了しても開いたウィンドウは閉じない
( Wクリックでバッチを開いたときは, cmd.exe は終了する )
echo "start"
sleep 5
echo "finish"
sleep 5
WARNING
exit
start sub.bat
start /wait sub.bat
sleep 4
コマンドプロンプトで利用するコマンドツールが指定された場合(defragなど)
Windowsプログラムでありながらコマンドプロンプトで利用するツールなどを指定した場合も
新たなコマンドプロンプトのウィンドウが開き
そこで実行される
処理が終了するとウィンドウはすぐに閉じられる
CommandPrompt == Window == Process のことかな?
(.) アプリケーションのファイル名( 実行可能でないファイル )を指定
関連づいたアプリケーションが起動( ダブルクリックと同じ )
FTYPE, ASSOC
start xxx.txt
start xxx.xls
start d:\mus.wpl
WARNING
(コマンド拡張機能が有効の場合)関連付けがなければエラー
start foo.data
32bit GUI Program を起動する
echo start
start "title" "C:\Program Files\Internet Explorer\IEXPLORE.EXE" "
http://yahoo.com"
start "title" "C:\Program Files\Internet Explorer\IEXPLORE.EXE" "
http://google.com"
echo end
> ie.bat
(.) ディレクトリ名を指定
エクスプローラが起動し 指定したディレクトリを開く
start C:\
start /b test.bat
start /min test.bat
start test.bat
test.bat
system( "start /b foo.bat" );
// [/b] をつけなくても 非同期になる
// 別 Window は表示しっぱなし
system( "start foo.bat" );
system( "call foo.bat" );
system( "foo.bat" );
start /wait C:\mymus\test.wpl
start /wait sub.bat
start regedit
start "NewWindow" test.bat
BAD
["] でくくる
start NewWindow test.bat
start /BELOWNORMAL job.bat
"タイトル"
新たに開くコマンドプロンプトのウィンドウのタイトルバーに表示するタイトルを指定。
/b
ウィンドウを新たに開かずに指定したコマンドを実行
/d path
実行 Directory を指定する
/i
現在の環境でなく、cmd.exe が起動する基本環境でコマンドを実行。
/min, /max
新しいコマンドプロンプトのウィンドウを最小化, 最大化にして開く
/separate
別メモリ領域で16ビットプログラムを実行する。
/shared
共有メモリ空間で16ビットプログラムを実行する。
/wait
処理がおわるまで起動元を待機
処理優先度
コマンド実行時の処理優先度
/LOW ・・・ IDLE優先度クラスで実行
/NORMAL ・・・ NORMAL優先度クラスで実行
/HIGH ・・・ HIGH優先度クラスで実行
/REALTIME ・・・ REALTIME優先度クラスで実行
/ABOVENORMAL ・・・ ABOVENORMAL優先度クラスで実行
/BELOWNORMAL ・・・ BELOWNORMAL優先度クラスで実行
「/b」
コマンド実行の際に新しいウィンドウは開かなくなるが、
実行中のコマンドは基本的に c-c で処理を中断することはできなくなる
中断したい場合 c-BRK
takeown
SYNTAX
takeown OPTION FILE ...
DESC
ファイルの所有権を変更する
指定したファイルの所有権をログインユーザに変更する
takeown /f c:\Windows\System32\dinput8.dll
所有権を変更したら rename などができる
ren c:\Windows\System32\dinput8.dll dinput8.dll__
taskkill
DESC
Process を強制終了する
taskkill /F /PID xxx
id=`cmd /c "tasklist /FO csv" | grep -i "notepad" | cut -f 2 -d "," | sed 's/\"//g'`
cmd /c "taskkill /F /PID $id"
tasklist
DESC
プロセスをリストアップする。
tasklist
tasklist /FO csv
time
DESC
時刻を取得する
time /t
timeout
SYNTAX
timeout /T []
DESC
指定した時間( 秒 )をまつ
timeout /T -1
timeout /T 2
title
DESC
title MyDevelopment
type
SYNTAX
type file
DESC
file の中身を表示
bash でいえば cat
type test.txt
type mingw.bat
ver
SYNTAX
ver
DESC
OS の version をしらべる
XCOPY
SYNTAX
xcopy [op] src dst
DESC
ファイル, フォルダをツリーのままコピー
タスクから使えば バックアップ・システムになります
robocopy を利用するとさらに便利
__LINK__(robocopy)
OP
/D : 新しいファイルだけをコピー
/S /E : (空のものも含めて)サブフォルダもコピーする、
/H : Hide 隠しファイル
/C : エラーを無視
/Y : 無条件
/R : 読み取り専用ファイル
/T : Directory のみを Copy
/? : Help
xcopy c:\include f:\include\
xcopy /EXCLUDE:c:\ext.txt /D /S /E /H /C /Y /R c:\include f:\include\
if exist z:\. net use z: /delete
if not exist z:\. net use z: \\backupserver\backupvol
set logfile=c:\log\copyall.log
xcopy c:\usr z:\usr\ /D /S /E /H /C /Y /R >> %logfile%
除外リスト ファイルの内容
.svn
.obj
~
バックアップ