2

フォルダのリストを含むテキスト ファイルがあります。テキスト ファイルは次のようになります。

「D:\old\FOLDER1」  
「D:\old\FOLDER2」  
「D:\old\FOLDER3」  
「D:\old\FOLDER4」  
「D:\old\FOLDER5」  

これらすべてのフォルダには、その下にサブフォルダとファイルがあります

私がしたいのは、xcopyを使用してフォルダーをコピーFOLDER1FOLDER2、複製し、それらのフォルダーの構造FOLDER3 FOLDER4FOLDER5複製することです。出力で取得したい

D:\output\bkup\FOLDER1\..........すべてのサブフォルダーとファイルを含む D:\output\bkup\FOLDER2\.....................すべてのサブフォルダーを含むand files D:\output\bkup\FOLDER3\..........すべてのサブフォルダーとファイルを含む
D:\output\bkup\FOLDER4\..........すべてのサブフォルダーとファイルを含む
D:\output\bkup\FOLDER5\............ すべてのサブフォルダーとファイルを含む

1つのフォルダーで正常に機能するスクリプトを以下に記述しました

set sourceFolder="D:\old\FOLDER5"
set destinationFolder=%sourceFolder:~7,-1%
echo %destinationFolder%
xcopy /s /e /i /h /r /y %sourceFolder%  "D:\output\bkup%destinationFolder%"

しかし、コピーするディレクトリの数は 100 以上なので、for ループを使用するか、コピーするディレクトリのリストをテキスト ファイルに渡すのが好きです。

私を助けてください、私はバッチファイルの書き込みの専門家ではありません。

4

3 に答える 3

2

試しrobocopyてみてください。必要に応じてより強力で、XP Prof.以降で利用できます。

set "sourceFolder=D:\old\FOLDER5"
set "destinationFolder=%sourceFolder:~7,-1%"
robocopy "%sourceFolder%" "%destinationFolder%" /MIR

これにより、「%destinationFolder%」で完全なミラーが作成されます。

を使用してテキスト ファイルからフォルダーをコピーする場合xcopyは、次のコードを使用します。

set "sourceFolder=D:\old\FOLDER5"
set "destinationFolder=%sourceFolder:~7,-1%"
for /f "usebackqdelims=" %%i in ("My File With Source Folders.txt") do xcopy /seihry "%%i" "D:\output\bkup%destinationFolder%"

ソース フォルダを含むテキスト ファイルは"My File With Source Folders.txt".

于 2013-06-01T22:14:48.210 に答える
2

for /f を使用して、テキストファイルを 1 行ずつ読み取る (必要に応じて解析する) ことができます。行全体を読むには "delims=" を使用します。複数の引数を持たないように引用符を追加し、サブプロシージャーで引用符を削除することを忘れないでください

for /f "delims=" %%a in (yourtextfile.txt) do call :docopy "%%a"
goto :eof

:docopy
set sourceFolder=%~1
set destinationFolder=%sourceFolder:~7,-1%
echo %destinationFolder%
xcopy /s /e /i /h /r /y %sourceFolder%  "D:\output\bkup%destinationFolder%" 
goto :eof
于 2013-06-01T21:47:45.143 に答える