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


13

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

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

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


3
%CD%環境変数を使用することで、思っているよりも少ない労力で相対パスを絶対パスに変換できることに注意してください。例: robocopy ".\CurrentDir" ".\NewDir" /XD "%CD%\CurrentDir\SubDir1" "%CD%\CurrentDir\SubDir2" /E /MOVE
gbr

gbrの答えが正しい答えである必要があります。(相対パスに「..」は必要ない場合)
日本酒

回答:


14

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

つまり:

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

6
残念ながら、これはレベル2以上のサブディレクトリ、つまり/ XD "SubDir1 / SubDir11"では機能しません。
Truthseeker 2014年

@truthseeker-そうです。これは第1レベルのフォルダーで機能しますが、それより低いものはありません。そのためには、絶対ソースパス(つまり、「/ xd%〜dp0CurrentDir \ Folder1 \ Subfolder1」)を使用する必要があります。その場合、「Subfolder1」は適切に無視されますが、「Folder1」などが同期されます。相対パスは使用できません。宛先パスは使用できません。
ロケットモンキー

0

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

最上位のフォルダーを除外するだけの場合-フォルダー名を使用するだけ-例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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.