1. ホーム
  2. windows

[解決済み】xcopyでexcludeパラメータを設定すると「パラメータの数が無効です」というエラーが返ってくる。

2022-01-27 02:19:06

質問

発行しています。

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など)を探しているわけではありません。

解決方法は?

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

引用符を削除すると、スペース以降のテキストが追加パラメータとして解釈され、"Invalid number of parameters"というエラーが表示されます。引用符を残したままだと、引用符をパスの一部として扱い、ファイルが見つからないと報告されます。

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=54300 をご覧ください。