web-dev-qa-db-ja.com

excludeパラメータが設定されている場合、xcopyは「Invalid number of parameters」というエラーを返します

発行:

xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y

期待どおりに動作します。しかしながら:

xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y /exclude:"Y:\...\exclude.txt"

エラーを返します:

無効なパラメーター数

パス名(スペースを含む)が引用符で囲まれていない場合にも発生します。ただし、これは事実ではありません。 (読みやすいように編集された)パスはすべて正しく対応しています。構文( 製品ドキュメント-Xcopy )も正しいです。 OSに関してはWindows XP Professional x32 SP3。

2番目のcmdがエラーを返すのはなぜですか?どのように解決するのですか? xcopy(robocopyなど)の代替を探していません。

9
user4157124

XCOPYは、DOSの時代を思わせる古いコマンドです。長いファイル名をサポートするために/ EXCLUDEオプションが更新されていないようです。うーん:

引用符を削除すると、スペースの後のテキストが追加のパラメーターとして解釈され、「パラメーターの数が無効です」エラーが表示されます。引用符を保持する場合、引用符をパスの一部として扱い、ファイルが見つからないと報告します。

次の3つの解決策があると思います。

1)パスに短い8.3フォルダー名を使用します。

もちろん、ボリュームの短縮名が無効になっている場合、これは機能しません。

2)SUBSTコマンドを使用して、面倒なパスのドライブエイリアスを作成します。

subst Q: "Y:\path with spaces"
xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y /exclude:Q:exclude.txt
subst Q: /d

無料のドライブ文字を知らない場合、これは問題になる可能性があります。

3)(私のお気に入り)単純にPUSHDが面倒なパスを実行し、そこからコマンドを実行します:-)

pushd "Y:\path with spaces"
xcopy X:\ "Y:\...\bin\9876543210\" /c /g /d /i /e /r /h /y /exclude:exclude.txt
popd



---(https://sevenx7x.wordpress.com/2009/01/02/xcopy-with-exclude-option-shows-cant-read-file/
および 詳細については、http://forums.majorgeeks.com/showthread.php?t = 543 を参照してください。

12
dbenham

_/EXCLUDE:file_スイッチは、指定されたファイルを除外しません。 xcopyコマンドリファレンス

/exclude:FileName1[+[FileName2][+[FileName3](…)]ファイルのリストを指定します。少なくとも1つのファイルを指定する必要があります。 各ファイルには検索文字列が含まれ、各文字列はファイル内の個別の行にあります。文字列のいずれかが、コピーされるファイルの絶対パスのいずれかの部分と一致する場合、そのファイルはコピーから除外されます。

0
JosefZ