it技術:バッチファイル
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
it技術:バッチファイル [2017/04/19 15:35] – [regeditのコマンドライン] yajuadmin | it技術:バッチファイル [2019/02/18 11:58] – [日付加算はvbsにやらせる] yajuadmin | ||
---|---|---|---|
行 5: | 行 5: | ||
cd /d %~dp0 | cd /d %~dp0 | ||
</ | </ | ||
+ | “%~dp0” は、“%0” で 0 番目の引数 (つまりバッチファイルのフルパス) から、“~” (チルダ) で両端を囲むダブルクオートを取り除き、“d” でドライブレターを残し、更に “p” でパスを残す、つまり、バッチファイルのあるフォルダまでのパスを示しています。 | ||
+ | ===== 32bit環境で実行 ===== | ||
+ | 64bitOS上では、コマンドプロンプトやCScriptは64bitで動作してしまうため、WOW64内環境内で実行させる必要がある。\\ | ||
+ | [[http:// | ||
+ | |||
+ | Excelファイルのデータアクセスに「OLEDB4.0」を使う場合、32bit環境でないとエラーとなる。\\ | ||
+ | IISで32bitモードで動作する際に使用するモジュールのレジストリ登録も32bit環境で実行させる。 | ||
+ | ==== VBSの場合 ==== | ||
+ | <code bat> | ||
+ | %windir%SysWOW64\cscript.exe xxxxx.vbs | ||
+ | または | ||
+ | %windir%SysWOW64\cmd.exe xxxxx.vbs | ||
+ | </ | ||
+ | ==== レジストリ登録の場合 ==== | ||
+ | 「ファイル名を指定して実行」で入力する | ||
+ | <code bat> | ||
+ | %windir%SysWOW64\regsvr32 xxxxx.dll | ||
+ | </ | ||
===== 変数の値が反映されない ===== | ===== 変数の値が反映されない ===== | ||
if文、for文の中に書いた処理は「()を抜けてから」変数の値が反映される。\\ | if文、for文の中に書いた処理は「()を抜けてから」変数の値が反映される。\\ | ||
行 39: | 行 57: | ||
echo ファイルが見つかりません ^(%filePath%^) | echo ファイルが見つかりません ^(%filePath%^) | ||
) | ) | ||
+ | </ | ||
+ | |||
+ | ===== 日時YYYYMMDDHHMMSS形式のセット ===== | ||
+ | 現在時刻をYYYYMMDDHHMMSS形式で取得する。 | ||
+ | |||
+ | < | ||
+ | set time_tmp=%time: | ||
+ | set now=%date:/ | ||
+ | echo %now% | ||
</ | </ | ||
行 76: | 行 103: | ||
通常のリダイレクトは標準出力(「1」)に書き込まれるが、エラーメッセージはエラー出力(「2」)に書き込まれるためエラーメッセージをログに記録しておくことができない。その場合、「2>& | 通常のリダイレクトは標準出力(「1」)に書き込まれるが、エラーメッセージはエラー出力(「2」)に書き込まれるためエラーメッセージをログに記録しておくことができない。その場合、「2>& | ||
<code bat> | <code bat> | ||
+ | echp 開始 %date% %time% > log.txt | ||
call sub.bat >> log.txt | call sub.bat >> log.txt | ||
↓ | ↓ | ||
行 140: | 行 168: | ||
===== レジストリのコマンド編集 ===== | ===== レジストリのコマンド編集 ===== | ||
+ | regeditはコマンドラインから実行した場合、成否をerrorlevel環境変数に設定しないため、バッチファイルから使用する場合はregコマンドを使うことが望ましい。\\ | ||
+ | [[http:// | ||
+ | |||
<code bat 書式> | <code bat 書式> | ||
- | regedit [/L:system] [/R:user] [/ | + | reg サブコマンド キー名 ファイル名 |
</ | </ | ||
- | ^オプション^^ | + | ^主なサブコマンド^^ |
- | ^/C|レジストリオブジェクトの作成| | + | ^query|レジストリのキーや値を画面に表示します。| |
- | ^/E|レジストリの書き出し| | + | ^import|ファイル(*.reg 形式)からレジストリの情報をインポートします。| |
- | ^/I|レジストリの取り込み| | + | ^export|レジストリの情報をファイル(*.reg 形式)に出力します。| |
- | ^/ | + | |
- | ^/ | + | |
- | + | ||
- | ^追加パラメータ^^ | + | |
- | ^/ | + | |
- | ^/ | + | |
<code bat エクスポート> | <code bat エクスポート> | ||
行 160: | 行 185: | ||
:regSub | :regSub | ||
- | regedit /E %1 " | + | echo %1 >> regexport.log |
+ | reg export | ||
exit /b | exit /b | ||
</ | </ | ||
行 169: | 行 195: | ||
:regSub | :regSub | ||
if exist %1 ( | if exist %1 ( | ||
- | regedit /I /S %1 >> regimport.log 2>&1 | + | echo %1 >> regimport.log |
+ | reg import | ||
) | ) | ||
exit /b | exit /b | ||
行 184: | 行 211: | ||
^/ | ^/ | ||
^/ | ^/ | ||
+ | ^/ | ||
+ | |||
+ | XCOPY元としてフォルダを指定する場合,フォルダ名の末尾に\を付けないこと\\ | ||
+ | XCOPY先としてフォルダを指定する場合,フォルダ名の末尾に\を付けること | ||
=== 「ファイル名ですか、またはディレクトリ名ですか」の確認 === | === 「ファイル名ですか、またはディレクトリ名ですか」の確認 === | ||
行 189: | 行 220: | ||
「複写先が既存のディレクトリを含まず、かつ、名前が円記号(\)で終わっていない場合」または「複写元の下位フォルダに同じファイルがある場合」に表示される。 | 「複写先が既存のディレクトリを含まず、かつ、名前が円記号(\)で終わっていない場合」または「複写元の下位フォルダに同じファイルがある場合」に表示される。 | ||
- | 回避策としては複写先に円記号(\)を付ける。または下記のように強制的にファイルにecho F(ファイル) or D(ディレクトリ)を指定する。 | + | 回避策としては複写先に円記号(\)を付ける。または下記のように強制的にファイルにecho F(ファイル) or D(ディレクトリ)を指定する。\\ |
+ | ※複写元の下位フォルダに同じファイルがある場合、最後に見つかったファイルがコピーされる。\\ | ||
+ | その場合、XCopyをやめてCopy(複写先にフォルダの作成が必要)にするか、更新日が新しいのが確実なら「/ | ||
<code bat> | <code bat> | ||
Set InstallDir=D: | Set InstallDir=D: | ||
- | echo F|XCopy | + | echo F|XCopy " |
</ | </ | ||
行 230: | 行 263: | ||
</ | </ | ||
+ | ===== フォルダ自体をコピーする ===== | ||
+ | フォルダ自体をコピーするには、コピー先にフォルダを指定する。 | ||
+ | < | ||
+ | robocopy C:\AAA\hoge D:\BBB\hoge /E | ||
+ | echo d | xcopy C:\AAA\hoge D:\BBB\hoge /E | ||
+ | </ | ||
+ | |||
+ | ==== フォルダの更新日時を維持してコピーする ==== | ||
+ | フォルダの更新日時を維持してコピーするには、robocopyのオプション「/ | ||
+ | < | ||
+ | robocopy C:\AAA\hoge D:\BBB\hoge /E / | ||
+ | </ | ||
===== 参照 ===== | ===== 参照 ===== | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
* [[https:// | * [[https:// |
it技術/バッチファイル.txt · 最終更新: 2021/04/09 10:23 by yajuadmin