テキスト ファイルを読み取り、ファイルを含むフォルダーを別のディレクトリにコピーするバッチ ファイルを作成しようとしています。
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= 部分は、テキストファイルから読み取ったディレクトリにスペースを含めることができることを確認します