テキスト ファイルを読み取り、ファイルを含むフォルダーを別のディレクトリにコピーするバッチ ファイルを作成しようとしています。
set dest=f:\Test
for /f %%i in (C:\dirs.txt) do copy "%%i" %dest%
このバッチ ファイルを実行すると、ファイルのみがコピーされます。ファイルを含むフォルダーをコピーしたい。
IE フォルダ\ファイルから宛先\フォルダ\ファイルへ。
テキスト ファイルを読み取り、ファイルを含むフォルダーを別のディレクトリにコピーするバッチ ファイルを作成しようとしています。
set dest=f:\Test
for /f %%i in (C:\dirs.txt) do copy "%%i" %dest%
このバッチ ファイルを実行すると、ファイルのみがコピーされます。ファイルを含むフォルダーをコピーしたい。
IE フォルダ\ファイルから宛先\フォルダ\ファイルへ。
Vista以降をお持ちですか?次に、robocopy を試してみますrobocopy "source" "destination" /MIR
。その他のオプション:
使用法 :: ROBOCOPY ソース デスティネーション [ファイル [ファイル]...] [オプション] ソース:: ソース ディレクトリ (ドライブ:\パスまたは\\サーバー\共有\パス)。 宛先 :: 宛先ディレクトリ (ドライブ:\パスまたは\\サーバー\共有\パス)。 file :: コピーするファイル (名前/ワイルドカード: デフォルトは "*.*")。 :: :: コピー オプション : :: /S :: サブディレクトリをコピーしますが、空のディレクトリはコピーしません。 /E :: 空のディレクトリを含むサブディレクトリをコピーします。 /LEV:n :: ソース ディレクトリ ツリーの上位 n レベルのみをコピーします。 /Z :: 再起動可能モードでファイルをコピーします。 /B :: バックアップ モードでファイルをコピーします。 /ZB :: 再起動可能モードを使用します。アクセスが拒否された場合は、バックアップ モードを使用します。 /COPY:copyflag[s] :: 何をコピーするか (デフォルトは /COPY:DAT)。 (copyflags : D=データ、A=属性、T=タイムスタンプ)。 (S=セキュリティ=NTFS ACL、O=所有者情報、U=監査情報)。 /SEC :: SECurity を使用してファイルをコピーします (/COPY:DATS と同等)。 /COPYALL :: すべてのファイル情報をコピーします (/COPY:DATSOU と同等)。 /NOCOPY :: ファイル情報をコピーしません (/PURGE で役立ちます)。 /PURGE :: ソースに存在しなくなった dest ファイル/ディレクトリを削除します。 /MIR :: ディレクトリ ツリーをミラーリングします (/E と /PURGE に相当)。 /MOV :: MOVe ファイル (コピー後にソースから削除)。 /MOVE :: ファイルとディレクトリを移動します (コピー後にソースから削除します)。 /A+:[RASHNT] :: コピーされたファイルに指定された属性を追加します。 /A-:[RASHNT] :: コピーされたファイルから指定された属性を削除します。 /CREATE :: ディレクトリ ツリーと長さ 0 のファイルのみを作成します。 /FAT :: 8.3 FAT ファイル名のみを使用して宛先ファイルを作成します。 /FFT :: FAT ファイル時間 (2 秒単位) を想定します。 /256 :: 非常に長いパス (> 256 文字) のサポートをオフにします。 /MON:n :: モニターソース; n を超える変更が見られた場合に再度実行します。 /MOT:m :: 監視ソース; 変更された場合、再実行 m 分 時間。 /RH:hhmm-hhmm :: Run Hours - 新しいコピーを開始できる時間。 /PF :: (パスごとではなく) ファイルごとに実行時間をチェックします。 /IPG:n :: 低速回線の帯域幅を解放するためのパケット間ギャップ (ミリ秒)。
もっと興味深いオプションがあります。
ファイルを台無しにする前に、おそらく IE でテストする必要があります。
@echo off
CD drive path of parent folder
mkdir A
CD ...\A
echo hello>1.txt
echo hello2>2.txt
mkdir A2
xcopy A "drive path"
start explorer.exe "path to A2"
これにより、テスト用の基本的なフォルダー設定が作成されます。その後、動作する場合は、ファイル パスに適用します。
上記の解決策は、ディレクトリの内容を宛先のルートにコピーするようです。また、スペースが含まれるフォルダーに問題があります。それを解決するには、以下の行を試してください...
set dest=e:\Test
for /f "delims=" %%i in (folders.txt) do xcopy "%%i\*" "%dest%\%%i\*" /E /F /Y
/E also copies empty subdirectories
/F lists the full filenames to copies (for debugging purposes)
/Y answers questions with yes.
存在しないディレクトリはこのコマンドで作成され、宛先にファイルが存在する場合は上書きされます。
delims= 部分は、テキストファイルから読み取ったディレクトリにスペースを含めることができることを確認します