documents:os:windows:batch:batch-007
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン | |||
| documents:os:windows:batch:batch-007 [2026/05/30 18:35] – 削除 - 外部編集 (不明な日付) 127.0.0.1 | documents:os:windows:batch:batch-007 [2026/05/30 18:35] (現在) – ↷ documents:proglang:batch:batch-007 から documents:os:windows:batch:batch-007 へページを移動しました。 k896951 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== 006.CMD.EXE FOR文とROBOCOPYコマンドの組み合わせメモ ====== | ||
| + | |||
| + | 2016/ | ||
| + | 自分用メモ | ||
| + | |||
| + | |||
| + | ===== バッチファイル実行 ===== | ||
| + | |||
| + | こんなバッチファイルを作成。 | ||
| + | <code batch sample1.bat> | ||
| + | @echo off | ||
| + | |||
| + | FOR /D %%d IN (" | ||
| + | FOR /D %%f IN (" | ||
| + | CALL :mkcmdline " | ||
| + | ) | ||
| + | ) | ||
| + | EXIT /b 0 | ||
| + | |||
| + | :mkcmdline | ||
| + | echo H: | ||
| + | |||
| + | </ | ||
| + | |||
| + | これを以下の環境で実行してみる。 | ||
| + | |||
| + | < | ||
| + | h: | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | 2016/ | ||
| + | 2016/ | ||
| + | 2016/ | ||
| + | 2016/ | ||
| + | 2016/ | ||
| + | 2016/ | ||
| + | 2016/ | ||
| + | 2016/ | ||
| + | 2016/ | ||
| + | 1 個のファイル | ||
| + | 8 個のディレクトリ | ||
| + | |||
| + | h: | ||
| + | フォルダー パスの一覧: | ||
| + | ボリューム シリアル番号は 82D7-3881 です | ||
| + | H:\JOB | ||
| + | ├─backup | ||
| + | ├─job 7 8 | ||
| + | │ ├─child780 | ||
| + | │ └─child781 | ||
| + | ├─job1 | ||
| + | │ ├─child10 | ||
| + | │ └─child11 | ||
| + | ├─job2 | ||
| + | │ ├─child20 | ||
| + | │ └─child21 | ||
| + | ├─job3.1.1 | ||
| + | │ ├─child3110 | ||
| + | │ └─child3111 | ||
| + | └─job5& | ||
| + | ├─child560 | ||
| + | └─child561 | ||
| + | |||
| + | h: | ||
| + | H: | ||
| + | H: | ||
| + | H: | ||
| + | H: | ||
| + | H: | ||
| + | H: | ||
| + | H: | ||
| + | H: | ||
| + | H: | ||
| + | H: | ||
| + | |||
| + | h:\job> | ||
| + | </ | ||
| + | |||
| + | パスがいい感じに展開されている。これを例えば、ROBOCOPYコマンドの source, destination に適用できればディレクトリの数に動的に対応できる。\\ | ||
| + | |||
| + | |||
| + | ===== ROBOCOPYコマンドに置き換えしてみる ===== | ||
| + | |||
| + | sample1.batを修正してROBOCOPYコマンドを呼び出すsample2.batを作成。 | ||
| + | |||
| + | <code batch sample2.bat> | ||
| + | @echo off | ||
| + | |||
| + | FOR /D %%d IN (" | ||
| + | FOR /D %%f IN (" | ||
| + | CALL :mkcmdline " | ||
| + | ) | ||
| + | ) | ||
| + | EXIT /b 0 | ||
| + | |||
| + | :mkcmdline | ||
| + | ROBOCOPY H: | ||
| + | |||
| + | </ | ||
| + | |||
| + | うまくいけばROBOCOPYがディレクトリの数だけ実行されるはず… | ||
| + | < | ||
| + | h: | ||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 0:51:04 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | |||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | エラー: 無効なパラメーター #4 : " | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | /MIR :: 完全なディレクトリ ツリーをミラー化します。 | ||
| + | |||
| + | 詳細な使用方法については、ROBOCOPY /? を実行してください。 | ||
| + | |||
| + | |||
| + | **** /MIR はファイルをコピーできるだけでなく、削除もできます。 | ||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 0:51:04 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | |||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | エラー: 無効なパラメーター #4 : " | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | /MIR :: 完全なディレクトリ ツリーをミラー化します。 | ||
| + | |||
| + | 詳細な使用方法については、ROBOCOPY /? を実行してください。 | ||
| + | |||
| + | |||
| + | **** /MIR はファイルをコピーできるだけでなく、削除もできます。 | ||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 0:51:04 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | |||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 2016/06/23 00:51:04 エラー 123 (0x0000007B) コピー元ディレクトリにアクセスしています H: | ||
| + | ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 | ||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 0:51:04 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | |||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 2016/06/23 00:51:04 エラー 123 (0x0000007B) コピー元ディレクトリにアクセスしています H: | ||
| + | ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 | ||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 0:51:04 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | |||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 2016/06/23 00:51:04 エラー 123 (0x0000007B) コピー元ディレクトリにアクセスしています H: | ||
| + | ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 | ||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 0:51:04 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | |||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 2016/06/23 00:51:04 エラー 123 (0x0000007B) コピー元ディレクトリにアクセスしています H: | ||
| + | ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 | ||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 0:51:04 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | |||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 2016/06/23 00:51:04 エラー 123 (0x0000007B) コピー元ディレクトリにアクセスしています H: | ||
| + | ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 | ||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 0:51:04 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | |||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 2016/06/23 00:51:04 エラー 123 (0x0000007B) コピー元ディレクトリにアクセスしています H: | ||
| + | ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 | ||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 0:51:04 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | |||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 2016/06/23 00:51:04 エラー 123 (0x0000007B) コピー元ディレクトリにアクセスしています H: | ||
| + | ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 | ||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 0:51:05 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | |||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 2016/06/23 00:51:05 エラー 123 (0x0000007B) コピー元ディレクトリにアクセスしています H: | ||
| + | ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 | ||
| + | |||
| + | h:\job> | ||
| + | </ | ||
| + | |||
| + | あれ? echo で出した時と違っている。 | ||
| + | |||
| + | ===== 対処方法 ===== | ||
| + | |||
| + | echo は CMD.EXE の組み込みコマンド、ROBOCOPYは外部コマンド、の違いがある。\\ | ||
| + | ROBOCOPYに限らず外部コマンドの時はダブルコーテーション(" | ||
| + | |||
| + | 例えば | ||
| + | <code batch> | ||
| + | | ||
| + | </ | ||
| + | |||
| + | はメッセージによると | ||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | になっている。残っている " はおそらく \" が " に変換された結果で、この部分は書き換えが行われないのであろうと思われる。 | ||
| + | |||
| + | 試行錯誤し、sample2.batを修正してパスの文字列が正しく出るsample3.batを作成。 | ||
| + | |||
| + | <code batch sample3.bat> | ||
| + | @echo off | ||
| + | |||
| + | FOR /D %%d IN (" | ||
| + | FOR /D %%f IN (" | ||
| + | CALL :mkcmdline " | ||
| + | ) | ||
| + | ) | ||
| + | EXIT /b 0 | ||
| + | |||
| + | :mkcmdline | ||
| + | ROBOCOPY H: | ||
| + | |||
| + | </ | ||
| + | |||
| + | 結果はこの通り。 | ||
| + | |||
| + | < | ||
| + | h: | ||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 1:02:15 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | | ||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 新しいディレクトリ | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 合計 | ||
| + | | ||
| + | | ||
| + | バイト: | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 1:02:15 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | | ||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 新しいディレクトリ | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 合計 | ||
| + | | ||
| + | | ||
| + | バイト: | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 1:02:15 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | | ||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 新しいディレクトリ | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 合計 | ||
| + | | ||
| + | | ||
| + | バイト: | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 1:02:15 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | | ||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 新しいディレクトリ | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 合計 | ||
| + | | ||
| + | | ||
| + | バイト: | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 1:02:15 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | | ||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 新しいディレクトリ | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 合計 | ||
| + | | ||
| + | | ||
| + | バイト: | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 1:02:15 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | | ||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 新しいディレクトリ | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 合計 | ||
| + | | ||
| + | | ||
| + | バイト: | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 1:02:15 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | | ||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 新しいディレクトリ | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 合計 | ||
| + | | ||
| + | | ||
| + | バイト: | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 1:02:16 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | | ||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 新しいディレクトリ | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 合計 | ||
| + | | ||
| + | | ||
| + | バイト: | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 1:02:16 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | | ||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 新しいディレクトリ | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 合計 | ||
| + | | ||
| + | | ||
| + | バイト: | ||
| + | | ||
| + | | ||
| + | |||
| + | |||
| + | ------------------------------------------------------------------------------- | ||
| + | | ||
| + | ------------------------------------------------------------------------------- | ||
| + | |||
| + | 開始: 2016年6月23日 1:02:16 | ||
| + | | ||
| + | | ||
| + | |||
| + | ファイル: | ||
| + | | ||
| + | オプション: | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 新しいディレクトリ | ||
| + | |||
| + | ------------------------------------------------------------------------------ | ||
| + | |||
| + | 合計 | ||
| + | | ||
| + | | ||
| + | バイト: | ||
| + | | ||
| + | | ||
| + | |||
| + | h:\job> | ||
| + | </ | ||
| + | |||
| + | コピー先、コピー元の展開も正しくできた。 | ||
| + | <code batch> | ||
| + | | ||
| + | </ | ||
| + | |||
| + | はメッセージによると | ||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | になっている。\\が \に変換された結果 " に影響をあたえる \ がなくなり、" | ||
| + | |||
| + | {{tag> 技術資料 Windows batch CMD.EXE}} | ||
| + | |||
documents/os/windows/batch/batch-007.txt · 最終更新: by k896951
