2012-03-26 11 views
0

私は現在、フォルダAからファイルリストを読み取るバッチファイルを持っており、特定の日付を超えるとフォルダBにコピーして元のファイルを削除します。Windowsのバッチファイルバックアップ、ネストされたフォルダ/ファイルの再作成

問題は、バッチファイルがフォルダA内のファイル構造を再作成したいと思いますが、これを行う方法がわかりません。ここでは、コードです:

echo off 
echo REM :- THE FOLLOWING FILES ARE OLDER THAN 7 DAYS AND CAN BE MOVED TO BACKUP -: 
pause 
forfiles /p c:\test\one /s /m *.gif /c "cmd /c dir /b/s/t:w @path" 
echo. 
echo REM :- CONTINUE TO MOVE THOSE FILES TO THE BACKUP LOCATION -: 
pause 
forfiles /p c:\test\one /s /m *.gif /c "cmd /c mkdir c:\test\two\@relpath" 
echo. 
pause 
forfiles /p c:\test\one /s /m *.gif /c "cmd /c copy /-y @path c:\test\two\@relpath" 
pause 
echo. 
echo REM :- THE FOLLOWING FILES EXIST IN THE BACKUP LOCATION -: 
echo. 
pause 
dir "c:\test\two" /a/s/b /o:gn 
echo. 
echo REM :- CONTINUE TO DELETE THOSE BACKUPS -: 
pause 
rd /s "c:\test\two" 
echo. 
pause 

問題は内部@relpathが自身の名前のフォルダ内の各ファイル名で終わるフォルダBIにおけるので、全体のパスとファイル名を取るように思われる(例えば「filename.gif」です同じ名前のフォルダ)。パスからファイル名を削除し、それに基づいてフォルダBのファイル構造を作成し、正しい場所にファイルをコピーするにはどうすればよいですか?

おかげ

答えて

2

あなたは/Tスイッチを使用してファイル構造を再作成するxcopyを使用することができます。空のディレクトリとサブディレクトリをコピーするには、/Eスイッチも使用する必要があります。

すべてのスイッチのヘルプについては、cmdのプロンプトでxcopy /?と入力してください。お役に立てれば!

+0

ありがとうございました。とても役に立ちました。 – RingTailedLemur

+0

すごくうれしいです。これがあなたの質問に答えたなら、あなたはそのダニをクリックして答えを受け入れることができます。 –

0

あなたはそれが好きで書くことができる:

forfiles /p c:\test\one /s /m *.gif /c "cmd /c mkdir c:\test\two\@relpath\.."

これが使用されてからファイル名を防止し、親フォルダへの結果のパスをバックアップします。

関連する問題