web-dev-qa-db-ja.com

XCOPY /ディレクトリ構文の除外

XCOPYを使用して、次のようなディレクトリをコピーしようとしています。

-MainFolder
 -ManyFoldersIWantToCopy
 -ManyFoldersIWantToCopy
 -...
 -Source Code

/EXCLUDEオプションを使用して、Source Codeを除くすべてのフォルダーをコピーしたいと思います。

私は以下を使ってみましたが、運がありませんでした:

xcopy "Source" "Destination" /EXCLUDE:"\Source Code\" /E /C /R /I /K /Y

私が受け取るエラーメッセージは次のとおりです:Can't read file: "\Source Code\"

代わりに一重引用符を使用して、\の有無にかかわらず、二重引用符をすべて一緒に削除しようとしましたが、同じエラーメッセージが表示されます。

何か案は?

4
Onion-Knight
C:\>xcopy /?
...
  /EXCLUDE:file1[+file2][+file3]...
           Specifies a list of files containing strings.  Each string
           should be in a separate line in the files.  When any of the
           strings match any part of the absolute path of the file to be
           copied, that file will be excluded from being copied.  For
           example, specifying a string like \obj\ or .obj will exclude
           all files underneath the directory obj or all files with the
           .obj extension respectively.

「ソースコード」をファイルに入れて、コマンドラインでそのファイルを指定する必要があります。

6
Hugh Allen

このエラーにはさらに説明が必要だと思います。私はこれを見つけました ブログ投稿 この問題については非常に有益です。

基本的に、古い8.3(除外パスにDOSの短いファイル名)を使用する必要があります。ディレクトリをフォルダの親に変更した後、コマンドプロンプトからコマンド「DIR/X」を実行することで、短い名前を判別できます(8.3の名前が必要です)。 MSがこのコマンドを更新して長いファイル名をサポートしていないのは残念です。

短いパス/ファイル名を使用したくない場合は、代わりにrobocopyを使用することをお勧めします。もちろん、外部の「excluded_files.txt」に長い名前を入れることもできると思います。これはXCopyでサポートされているようです。

2
Ken Richards

パスの多くにスペースが含まれていても、行を引用符で囲まずにxcopyEXCLUDEフラグを正常に使用しました。したがって、私にとって(Win7 Home Premium SP1修復インストールDOSプロンプト)、キャリッジリターンは適切な区切りでした。次の形式のプレーンテキストファイルを使用しました。

file 1.txt
path 2\file 2.text
and so on\and so forth.txt

次に、xcopyフラグとしてEXCLUDE:F:\ filename.txtを使用します。除外ファイルの行にドライブ文字を含めませんでした(/?ページで確認されているように、部分的に一致する必要があるだけです)。名前の付いたファイルをすぐにスキップしました。これを/ D:09-21-2014と組み合わせて、最近のファイルと他のタグのホストのみを正常に取得しました。

確認のために、上記のKen Richardの発見に反して、私は古いDOSの短い名前を使用しませんでした。

0
Chris