■ カテゴリ別
■ FileSystem
REFERENCE attrib
REFERENCE copy
REFERENCE mkdir
REFERENCE dir
REFERENCE del
REFERENCE rename
REFERENCE xcopy
REFERENCE mklink
■ network
REFERENCE net use
■ utility
REFERENCE chkdsk
REFERENCE mem
■ commmadprompt
REFERENCE title
REFERENCE color
REFERENCE cls
■ bat.program
REFERENCE pause
REFERENCE setlocal
REFERENCE exit
REFERENCE goto
■ process
REFERENCE tasklist
REFERENCE taskkill
■ assoc
SYNTAX
assoc EXTENSION
DESC
ファイルを拡張子ごとに実行プログラムと関連づける。
現在の対応一覧をみる
.htm ファイルのプログラムを見る。
.htm ファイルのプログラムを見る。
■ 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 をよぶと
呼び出された側のバッチファイルが終了時点でとまり元のバッチに戻らない。
:: foo.bat を実行して、さらに処理をつづける
call foo.bat
:: call を利用しないと, foo.bat の終了時点でとまる
:: 元の batch に制御が戻れない
foo.bat
同じPROCESSで実行される
"start" は 別プロセスで実行される
// TaskManager > [プロセス] でみると確認できる
:: 別 Process で起動 ( cmd.exe が起動して test.bat を処理する )
start test.bat
:: 同一プロセスで実行
call test.bat
■ clip . clipboard . クリップボード
DESC
stdout への出力を クリップボードにコピーする。
■ 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
:: 絶対パスで指定 ( 拡張機能 ON ならば Space は区切り文字でない )
c:\WINDOWS> cd c:\Documents and Settings
:: OFF なら quot する ( ややこしい )
c:\WINDOWS> cd "c:\Documents and Settings"
■ cmd
DESC
cmd( Interpreter )を ChildProcess として起動する
ProcssExplorer で見ると 階層化するのが見える
OP
k : Boot 時にコマンドをフック
c : コマンドのみ実行をして Interpreter を終了
POINT
起動設定をしておく
:: CodePage 指定
%SystemRoot%\system32\cmd.exe /f:on /k "chcp 65001"
:: "D:\test" を CurrentDirectory にする
%SystemRoot%\system32\cmd.exe /f:on /k "D: && cd D:\test"
:: echo してみる
%SystemRoot%\system32\cmd.exe /f:on /k "echo aaa && echo bbb"
:: telnet を起動する
%SystemRoot%\system32\cmd.exe /f:on /k "telnet && open localhost"
:: HELP
cmd /?
:: Help マニュアルをつくる
cmd /? > cmdhelp.txt
:: Interactive にしないようにするためには
:: 任意の App も起動できる( bg として )
:: /c /k は最後に指定する
:: 残りの文字を CommandLine としてみるため
:: BOOT 時に指定した command を実行する
cmd /K echo "foobar"
:: 指定した文字列を実行して終了する
::
cmd /C mdkir foobar;
cmd /C "`cygpath -w /test/doc/doc.ods`"
:: cmd /c は bat を実行するのと同じ
test.bat
:: bat file を CommandLine 上で指定するのは
:: 現在の Interpreter で順次コマンド実行するのと同じ
type test.bat
echo test
C:
cd c:\
:: 実行する
test.bat
:: RET :
test
C:\>
::test.bat
mkdir foobar;
■ cls
SYNTAX
cls
DESC
プロンプト画面を clear する
■ color
DESC
Console の色を指定する
2 桁の 16 進数で指定する
SYNTAX
color BGFG
:: BG: 黒 FG 白
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)
:: UTF-8
chcp 65001
:: SJIS
chcp 932
chcp 65001
type utf16.txt > utf8.txt
■ copy
SYNTAX
cp src dst
■ date
SYNTAX
date [op]
DESC
日付を取得する
■ del
SYNTAX
del [op] [File ...]
del [op] [Directory ...]
DESC
指定ファイルを消去
指定ディレクトリ内のファイルを消去
OP
P : Prompt を消す前に表示
S : SubDirectory も含めてすべての指定ファイルを削除
A : Attribute 消すファイルの属性を指定する
:: CurrentDirectory のファイルをすべて消去
:: ( SubDirectory は検索されない )
del /P *
:: ".txt" ファイルをすべて削除
:: ( SubDirectory も対象 )
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
ディレクトリのファイルの一覧を表示
:: C:\ のファイルを表示
dir C:\
:: CurrentDirectory を表示
dir
:: 所有者を表示
dir /Q
:: File名のみの Short 形式で表示
dir /w
:: Wildcard で指定する
dir *.txt
:: File名のみ表示
dir /B
:: すべての種類( 隠しファイルも含めて )
dir /A
:: ソートする。
dir /O*
:: 変更日時でソート
dir /OD
■ echo
SYNTAX
echo [message]
echo [ON|OFF]
DESC
Message を表示する
:: echo の ON|OFF をきりかえる
:: ON にする
echo ON
:: OFF にする
echo OFF
:: 現在の設定をみる
echo
:: 変数が空のときの対策 [ . ] をつける
echo. %tmp%
■ expand . unexpand . tabfy
タブをスペースに変換する。
■ exit
SYNTAX
exit [/B] [ExitCode]
DESC
Script, Interpreter を終える
バッチ処理を途中で終えたいときに便利
:: bat を途中で終了する
if %ERRORLEVEL% == 1 (
exit /B
)
POINT
/B をつけないとインタープリタ自体が閉じる
コマンドプロンプトを閉じないようするには /B をつけてバッチスクリプトを中断する。
:: main.bat
echo start main.bat
:: ここで バッチ全体 が終わってしまう
call sub.bat
echo end main.bat
■ 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
:: 移動する側の label には : から始める。名前は任意の文字列。
:error
■ help
SYNTAX
help
DESC
コマンドリファレンス
■ mem
DESC
メモリ使用状況をチェック
SYNTAX
mem
■ mkdir
SYNTAX
mkdir [Drive:]Path
DESC
ディレクトリを作成する
:: C:/foo をつくる
mkdir c:\foo
:: 再帰的 につくってくれる
:: ( 拡張機能が ON のとき ) -> Default ON
mkdir c:\oya\ko\mago
:: 拡張機能 を ON にする
cmd /e:on
:: OFF にすると 作成できない
cmd /e:off
:: ディレクトリまたはファイルを作成できません
mkdir c:\oya\ko
■ mklink
SYNTAX
mklink link target
DESC
SymbolicLink を作成
:: d:/tmp への shortcut を test という名前で作成
mklink /d test d:\tmp
■ net use . NetworkDrive
SYNTAX
NET USE [デバイス名 | *] [パスワード | *] [/home]
DESC
別PC( ファイルサーバなど )の共有フォルダを
自分の PC のドライブに割りあてる
:: mount を自動化する
:: hostname\dir を K: としてマウント
net use K: \\hostname\dir password /user:username
WARNING
Driveletter の後は : をつけること
:: BAD
net use K \\hostname\dir password /user:username
:: OK
net use K: \\hostname\dir password /user:username
:: mount を 消す
net use z: /DELETE
:: コンピュータ名 "mypc" の "share" を K: にマッピングする
net use K: \\mypc\share
:: 現在マッピング接続しているデバイスの一覧を表示
net use
ステータス ローカル名 リモート名 ネットワーク名
-------------------------------------------------------------------------------
OK K: \\mypc\share Microsoft Windows Network
■ tracert . traceroot
指定したホストまでの経路を表示する。
家の 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 でできること
■ 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
:: fire wall の状態をみる
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
:: 各名前の IP アドレスを提供する NetBIOS 名キャッシュの内容を一覧表示
nbtstat -c
ローカル エリア接続:
Node IpAddress: [192.168.0.2] Scope Id: []
No names in cache
:: NetBIOS 名キャッシュからすべての名前を除去した後LMHOSTS ファイルを再読み取り
:: Windows ネットワークの名前解決統計情報の一覧を表示
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
変更後のパスの指定はできない。名前だけを指定する
:: BAD
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 *.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
:: 開始時間 ( Time == st )
::
:: 周期 ( Cycle == sc )
:: 毎日 22 時
schtasks /create /tn "test" /tr d:\test.bat /sc daily /st 22:47:00
:: 変更 test
mv "C:/WINDOWS/Tasks/Backup A.job" "C:/WINDOWS/Tasks/Backup test.job"
■ subst
SYNTAX
subst DRIVE_LETTER: PATH
DESC
任意のディレクトリにドライブレターを割り当てる
:: d:\test を F Drive にマップ
subst F: d:\test\
:: 仮想ドライブを 削除
subst F: /d
■ set
SYNTAX
set [VAR=[VALUE]]
DESC
環境変数 を設定 削除する
:: 現在の環境変数を LISTUP
set
:: 変数をセット
set var=value
:: 変数を展開
set %var%
:: 再度設定する
set var=value2
WARNING
:: "" はいらない
BAD
set var="Program Files"
OK
set var=Program Files
■ sleep
sleep コマンドはないため, timeout を利用する。
REFERENCE timeout
■ touch
■ sort
sort test.txt
sort /R test.txt
stdin から受け取る
■ where
PATH の通った場所から指定した実行ファイルのパスを探す。
■ 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 間で設定, 変更した環境変数をバッチファイル内のみ有効にする
:: env.bat ---------------------------
set VAR_GLOBAL=test
echo %VAR_GLOBAL%
:: ---------------------------
:: CommandPrompt から env.bat を実行
cmd> env.bat
:: 環境変数リストをみると VAR_GLOBAL=test とある
set
:: setlocal, endlocal までの環境変数をバッチファイル内のみ有効にする
:: env.bat ---------------------------
setlocal
:: VAR_LOCAL はバッチファイル内のみ有効
set VAR_LOCAL=aaa
echo %VAR_LOCAL%
:: ここまで Local 変数にする
endlocal
:: ここからは Global
set VAR_GLOBAL=test
echo %VAR_GLOBAL%
:: ---------------------------
cmd> env.bat
:: bat を終えると VAR_LOCAL は未定義にもどる
echo %VAR_LOCAL%
:: こっちは定義
:: RET : bbb
echo %VAR_GLOBAL%
POINT
一時的に上書きする
:: 一時的に PATH を c:\ に限定する
setlocal
path=C:\
ping 65.155.232.10
endlocal
不用意に変数を上書きしないよう
setlocal を bat の Template にしとくといい
setlocal
:: 3 つとも bat 内ローカル
set a=1
set b=2
set c=3
:: endlocal はファイルの最後に暗黙的に呼ばれるため, かかなくても OK
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 の対象はこんなもの
Windowsプログラムが指定すると(regedit、calc など)
同じプロセスで実行される
実行されたプログラムの動作に関係なく
コマンドプロンプトに戻る
新たなコマンドプロンプトの ウィンドウは開かない
内部コマンド, バッチファイル
新たなコマンドプロンプトのウィンドウ( Shell )が開き
指定されたコマンドやプログラムファイルが実行される
実行が終了しても開いたウィンドウは閉じない
( Wクリックでバッチを開いたときは, cmd.exe は終了する )
:: -----------------------------------
:: sub.bat ( よばれる側 )
:: -----------------------------------
echo "start"
sleep 5
echo "finish"
sleep 5
WARNING
:: start でコールした bat は Window が閉じない
:: ( 別の cmd.exe がコールされてるから )
:: 閉じたいなら 明示的に exit を呼ぶ
exit
:: -----------------------------------
:: call.bat ( 呼ぶ側 )
:: -----------------------------------
:: /wait をつけないと sub.bat よりも先に終了
start sub.bat
:: sub.bat の終了まち
start /wait sub.bat
sleep 4
コマンドプロンプトで利用するコマンドツールが指定された場合(defragなど)
Windowsプログラムでありながらコマンドプロンプトで利用するツールなどを指定した場合も
新たなコマンドプロンプトのウィンドウが開き
そこで実行される
処理が終了するとウィンドウはすぐに閉じられる
CommandPrompt == Window == Process のことかな?
アプリケーションのファイル名( 実行可能でないファイル )を指定
関連づいたアプリケーションが起動( ダブルクリックと同じ )
FTYPE, ASSOC
:: xxx.txt を Notepad でひらく
start xxx.txt
:: xxx.xls を Excel でひらく
start xxx.xls
:: xxx.wpl を WindowMediaPlayer でひらく
start d:\mus.wpl
WARNING
(コマンド拡張機能が有効の場合)関連付けがなければエラー
start foo.data
32bit GUI Program を起動する
:: IE の終了まちをしなくても すぐに制御がもどる
:: ie.bat -----------------------
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 が起動してすぐに "end" が出力 )
> ie.bat
ディレクトリ名を指定
エクスプローラが起動し 指定したディレクトリを開く
:: エクスプローラが起動して "c:" ディレクトリを開く
start C:\
:: 別 Procss 実行するけど, 新しい Window は新たにださない
start /b test.bat
:: ( Prompt ) Window を最小化して実行
start /min test.bat
:: 別 Process( cmd.exe )を起動して別 Window で表示する
start test.bat
:: 現在の Process で実行( bat 内のコマンドを連続入力するのと同じ )
test.bat
:: C 言語からよぶと 非同期( 別 PS )で実行される
system( "start /b foo.bat" );
// [/b] をつけなくても 非同期になる
// 別 Window は表示しっぱなし
system( "start foo.bat" );
:: 同期する
system( "call foo.bat" );
system( "foo.bat" );
:: wait で同期する
start /wait C:\mymus\test.wpl
start /wait sub.bat
:: レジストリエディタを起動
start regedit
:: コマンドプロンプトのウィンドウのタイトルを指定
start "NewWindow" test.bat
BAD
["] でくくる
start NewWindow test.bat
:: WEB Server などで実行するなら, 優先度をさげて CPU の割当を減らす
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 を強制終了する
# 指定した名前のアプリケーションを殺す。( bash から実行 )
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
:: CSV 形式
tasklist /FO csv
■ time
DESC
時刻を取得する
■ timeout
SYNTAX
timeout /T []
DESC
指定した時間( 秒 )をまつ
:: 無限にまつ
timeout /T -1
:: 2 秒まつ
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 を利用するとさらに便利
REFERENCE robocopy
OP
/D : 新しいファイルだけをコピー
/S /E : (空のものも含めて)サブフォルダもコピーする、
/H : Hide 隠しファイル
/C : エラーを無視
/Y : 無条件
/R : 読み取り専用ファイル
/T : Directory のみを Copy
/? : Help
:: c:\include を f:\ 以下にコピー
::
:: Directory 全体を Copy するには
:: dst の末尾に [ \ ]をつけて Directory であることを明示する
::
xcopy c:\include f:\include\
:: 除外リスト をつかう
xcopy /EXCLUDE:c:\ext.txt /D /S /E /H /C /Y /R c:\include f:\include\
:: net という cmd がある
if exist z:\. net use z: /delete
if not exist z:\. net use z: \\backupserver\backupvol
:: log を残す.
set logfile=c:\log\copyall.log
xcopy c:\usr z:\usr\ /D /S /E /H /C /Y /R >> %logfile%
除外リスト ファイルの内容
:: コメントは bat file と同じ
:: SVN の管理ファイルは無視( Sub Directory も無視される )
.svn
:: Object ファイルは無視
.obj
:: backup file
~
:: 日本語 ( ASCII でない )文字もできます
:: 書類_バックアップ.txt はコピーされない
::
バックアップ