バッチファイル / DOS
設定・管理
HOSTNAME
コンピュータ名の取得
wmic csproduct get IdentifyingNumber
製造番号の取得
USER名の取得(XP以降、2000未対応)
- set username
出力結果 USERNAME=taro
- QWINSTA
systeminfo
システム情報の取得
winver
chkdsk c: /f
修復オプションで、運が良ければデータが修復される場合もあるがHDDの負担が大きいので最終手段
チェックディスク(ドライブ修復) 参考
- デフラグ
サーバ関係
ActiveDirectoryユーザとコンピュータの一覧をエクスポート
ユーザ名、コンピュータ名、電話番号を出力する。 csvde -u -f c:\export.csv -r objectCategory=user -l cn,description,distinguishedName,displayName,sAMAccountName,telephonenumber
ActiveDirectory検索
rundll32.exe dsquery.dll,OpenQueryWindow をショートカット作成
変数の取込(例、コンピュータ名を取得)
for /F "USEBACKQ" %%a in (`set username`) do ( echo a = %%a set foo=%%a )
echo a = %%a echo foo = %foo%
時刻同期
rem------------------------------------------ rem NTPサーバに時刻を合わせる rem------------------------------------------
net time /setsntp:ntp.jst.mfeed.ad.jp,0x1
rem------------------------------------------ rem 時刻同期サービスを再起動する rem------------------------------------------
net stop w32time & net start w32time
rem------------------------------------------ rem 時刻同期を開始する(サーバ時刻を同期する) rem------------------------------------------
w32tm /resynq
サンプル
チェックディスクとデフラグをした後にシャットダウンするプログラム
WindowsXPだとスクリーンセーバ有効だとデフラグだめ,Win7だと動く
echo ----------------------------------- >> C:\11.log
echo %date% %time% 開始,Chkdsk >> C:\11.log
chkdsk c: /v
echo %date% %time% 開始,Defrag >> C:\11.log
defrag c: -f
echo %date% %time% 終了,Defrag >> C:\11.log
shutdown -s -f -t 50
echo %date% %time% 終了,Windows >> C:\11.log
ネットワーク
- DNSキャッシュクリア 参考
ipconfig /flushdns
- DOS-FTP
バッチファイルにてFTP操作
日付を利用する
テキスト関係
forfiles (対応OS:Windows Server 2003,Windows Vista 以降、XPは非対応 )
更新日付が指定期間以降/以前のファイル・フォルダの一覧をだす(処理する)
サンプル
forfiles /P "D:\OldFile" /M *.TXT /D -60 /C "CMD /c del @file"
コマンドの意味
「C:\XP」にある。拡張子がTXTのファイルで、現在よりも30日前のファイルを削除する
備考
forfiles.exeがないので、XPでは使用できないようである。
参考
- スペシャルサンクス:unicorndrill さん
for文 あるフォルダ直下のサブディテクトリ内のファイルを特定のフォルダにコピーする
例.C:\11\aa\aa.csv と C:\11\bb\bb.csv を C:\12\bb.csv C:\12\aa.csv としたい。
cd /d C:\11
for /r %i in (*.txt) do copy %i C:\12\
注意点:コピー先のフォルダは事前に作成しておく
バッチファイルで日付を利用する
ファイル結合
- 複数のファイルを1つのファイルにする。例:あるフォルダにあるTXTファイルを1つのファイルにする.
コマンド文1 COPY *.TXT Gattai.TXT - 結合するファイル名が決まっている場合は、2,3個を1つに結合する場合
コマンド文2 COPY 11.TXT + 12.TXT + 13.TXT Gattai.TXT
(この場合、結合するファイル名の数に限界があるので結合したいファイルだけ選びフォルダにおいて、コマンド文1がいいかもしれない。)
ディレクトリ操作
- ディレクトリ移動
cd /d c:\pg 例、ディレクトリの異なるフォルダへの移動(現在Cドライブで、Dドライブのディレクトリに移動)
- ディレクトリ削除
rmdir /S /Q C:\MK 例.C:\MKディテクトリを削除する
/S ディテクトリの中のファイル・フォルダを削除 このオプションがないと中にファイルがあると削除できない。
/Q 確認メッセージの非表示オプション
- エクスプローラーでCドライブを開く
explorer C:
XCOPY
※なんらかの原因でコピーができない場合(破損、属性)、その問題のあるファイルまたはフォルダ以降のXCOPYが走らないので、その場合は、/C を使う
ファイルとディレクトリ ツリーをコピーします。 XCOPY 送り側 [受け側] [/A | /M] [/D[:日付]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...]
送り側 コピーするファイル (複数可) を指定します。 受け側 新しいファイルの位置や名前を指定します。 /A アーカイブ属性のファイルのみをコピーし、属性は変更しません。 /M アーカイブ属性のファイルのみをコピーし、アーカイブ属性を解除 します。 /D:月-日-年 指定された日付以降に変更されたファイルをコピーします。 日付が指定されなかったときは、送り側の日付が受け側の日付より 新しいファイルだけをコピーします。 /EXCLUDE:ファイル1[+ファイル2][+ファイル3]... 文字列を含むファイルの一覧を指定します。各文字列はファイルの 中で別の行でなければなりません。 文字列がコピーされるファイルの絶対パスの一部と一致した場合、 そのファイルはコピーから除外されます。たとえば、\obj\ を指 定するとディレクトリ obj の下のファイルはすべて除外されます。 .obj という文字列を指定すると .obj という拡張子のファイルは すべて除外されます。 /P 受け側のファイルを作成する前に確認のメッセージを表示します。 /S 空の場合を除いて、ディレクトリとサブディレクトリをコピーします。 /E ディレクトリまたはサブディレクトリが空であってもコピーします。 /S /E と同じ意味です。/T と同時に指定できます。 /V 書き込んだ各ファイルを検証します。 /W キー入力があるまでコピー開始を待ちます。 /C エラーが発生してもコピーを続けます。 /I 受け側がなく複数のファイルをコピーする場合、受け側をディレク トリとしてコピーします。 /Q コピー中ファイル名を表示しません。 /F コピー中送り側と受け側の全ファイル名を表示します。 /L コピーされるファイル名を表示します。 /G 暗号化をサポートしない受け側に、暗号化されたファイルをコピーす ることを許可します。 /H 隠しファイルやシステム ファイルもコピーします。 /R 読み取り専用ファイルを上書きします。 /T ファイルはコピーせずにディレクトリのみを作成します。ディレク トリまたはサブディレクトリが空の場合は除きます。/E と使用すれ ばディレクトリやサブディレクトリが空でも作成されます。 /U 受け側に既に存在するファイルだけをコピーします。 /K 属性をコピーします。通常の XCOPY は読み取り専用属性を変更し ます。 /N 生成された短い名前を使用してコピーします。 /O ファイルの所有権と ACL 情報をコピーします。 /X ファイルの監査設定をコピーします (/O を含む)。 /Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示 しません。 /-Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示 します。 /Z 再起動可能モードでネットワーク ファイルをコピーします。
環境変数 COPYCMD にスイッチ /Y を設定できます。 これは、コマンド ラインの /-Y で無効になります。
Start
最小化した状態で起動する 参考
Start /MIN 11.bat
5秒後に起動
echo "サイボウズ起動中"
echo off
ping -n 5 127.0.0.1 > nul
cd C:\Program Files\kt start kt.exe
exit
シャットダウン 参考
構文
shutdown シャットダウン方法 [-f] [-m コンピュータ名] [-t 秒数] [-c "コメント"] [-d [u] [p] コード番号]
サンプル
shutdown -f -s -t 10 (10秒後にシャットダウン、実行中の処理も強制終了)
バッチファイルで任意の文字列を入力させる
サンプル
@echo off echo --------------------------------- echo ** 年月指定 ** echo ---------------------------------
set YearMon1= set YearMon2=
echo "例.2011年01月10日 ---> 20110101
set /P YearMon1="開始年月を入力して下さい:" set /P YearMon2="終了年月を入力して下さい:"
echo 開始年月:%YearMon1% echo 終了年月:%YearMon2%
実行結果例
--------------------------------- ** 年月指定 ** --------------------------------- "例.2011年01月10日 ---> 20110101 開始年月を入力して下さい:20110301 終了年月を入力して下さい:20110331 開始年月:20110301 終了年月:20110331
便利ショートカット
バッチファイルというより、DOSプロンプト画面での有効なショートカットキー
- DOS画面を最大拡大
ALT + ENTER (Win7では駄目だった)
- コマンドの履歴の一覧表示
F7
読み物
- コマンド名と同じ名前のバッチファイルは作成しない
場合によっては無限ループが発生して処理が止まらないので。
サイト内リンク
マクロ/スクリプト
- sqlcmdユーティリティ バッチファイルにより、SQLCMDを実行しバックアップを行う(.bakファイル作成)
- バッチファイル
- バッチファイルで日付を利用する
- T-SQL
- VBS
- PowerShell
- VBAマクロ
SQL Server系
Office系
OS系
その他