web-dev-qa-db-ja.com

Robocopy / XDが相対パスで機能しない

Robocopy /MOVEコマンドを実行しようとしていますが、/XDフラグで指定されたいくつかのサブディレクトリを除外しています。

robocopy ".\CurrentDir" ".\NewDir" /XD ".\CurrentDir\SubDir1" ".\CurrentDir\SubDir2" /E /MOVE

残念ながら、これは/XDオプションを無視し、すべてを移動します。すべてに絶対パスを使用すると、問題なく機能しますが、柔軟にする必要があります。相対パスで動作させる方法はありますか?

13
user8783

/XDに指定されたフォルダーは、ソースフォルダー内に存在する(除外する)フォルダーを参照しているため、親関係を指定せずに、除外するフォルダー名のみを指定します。

つまり:

robocopy ".\CurrentDir" ".\NewDir" /XD "SubDir1" "SubDir2" /E /MOVE
14

以下は役立つかもしれません-それは相対パスの問題に直接対処しますが、多くの除外ディレクトリとサブディレクトリを許可します。

トップレベルのフォルダーを除外するだけの場合-フォルダー名を使用するだけ-例APC。ただし、サブフォルダを実行している場合は、完全なパスが必要です。パスは、ソースパス+サブフォルダーまでのパスと完全に一致する必要があります。私はさまざまな方法でテストしましたが、これが動作させる唯一の方法です。このバッチ/ cmdファイル形式では、パスまたはファイル名にスペースを含めることもできます。

setlocal
set Source_path="\\usatlvmpdroadm1\C$\Installs"
set Destination_path="C:\Robo"
set Log_Path_and_File="C:\RoboCopy_Log_Files\01-Installs C drive to Robo C drive.txt"
set ED1="APC"
set ED2="\\usatlvmpdroadm1\C$\Installs\Dell\Dell MD3420 Firmware"

robocopy.exe %Source_path% %Destination_path% /COPYALL /ZB /MIR /MT:128 /DCOPY:T /XA:SH /XD %ED1% /XD %ED2% /XJ /XJD /R:2 /W:1 /NDL /NP /TEE /LOG:%Log_Path_and_File%

endlocal
0
Big John