[解決済み] xcopyコマンド使用時に "invalid path 0 files copied "というエラーが発生する。
質問
こんにちは、私はバッチでファイルをコピーするためにこの小さなコマンドを持っています、私はこの特定のコピーを一日に何度も行うので、それは助けになります。問題は、xcopyコマンドを使用しているときに発生します。全て正常なのですが、次のようなエラーが発生します: "無効なパス 0 files copied". 以下はそのコードです。
C:\Windows\System32\xcopy /Y "C:\Users\Ryan\Desktop\mmars_pub\" "C:\Users\Ryan\Desktop\Dropbox\MMARS\mmars_pub\"
xcopyの実行ファイルへのフルパスを使用しているのは、path環境変数が正しく機能するように設定するのに苦労したからです。しかし、結果には影響しないはずだと想像しています。MS-DOSベースのプログラムがWindowsを検出するのを防ぐ"チェックボックスについてどこかで読みましたが、この問題を解決できるはずですが、それが見つからないようです。何か助言をお願いします。
解決方法を教えてください。
オリジナルの回答
ソースフォルダのパスから最後のバックスラッシュを削除します。
C:\Windows\System32\xcopy.exe /Y "C:\Users\Ryan\Desktop\mmars_pub" "C:\Users\Ryan\Desktop\Dropbox\MMARS\mmars_pub\"
編集済 2015/10/01
元の質問ではリテラルのパスを使用しており、示された解決策で問題は解決しますが、もう1つの選択肢があります。リテラルパスの場合、およびパスが変数内にあり、バックスラッシュで終わる可能性がある(またはない)場合、終了バックスラッシュ(ある場合)が終了ドットを含む引用符から分離されていることを確認すれば十分です。
xcopy /y "x:\source\." "x:\target"
xcopy /y "%myVariable%." "x:\target"
この終端ドットは、ファイル/フォルダー名に干渉しません。もし末尾にバックスラッシュがあれば、追加されたドットは単に同じフォルダを参照することになります。Windowsのファイルやフォルダーがドットで名前を終えることができないように、バックスラッシュがない場合、それは破棄されます。
しかし、もし
xcopy
コマンドで処理される場合、この追加のドットは表示されるパスに含まれることを覚えておいてください。
ノート : 解答は行の上にあります。がある理由/場所に興味があれば、読み進めてください。 問題 .
なぜ
xcopy "c:\source\" "d:\target\"
は失敗するが
xcopy "c:\source" "d:\target\"
が動作するのか?
どちらのコマンドも有効なパス参照を持っているように見えますが・・・。はい!両方とも有効なパス参照ですが、コマンドを失敗させるために一緒に働く2つの要素があります。
- フォルダ参照が引用されている(注:これは が必要です。 パスがいつスペースや特殊文字を含むか分からないので、引用するのは良い習慣です)
-
xcopy
が処理する内部コマンドではありません。cmd
ではなく、実行可能なファイル
として
xcopy
は外部コマンドであるため、その引数は
cmd
パーサーのコマンドラインロジックです。これらは
Microsoft C起動コード
.
このパーサーは2つのルール、公式ルールに従います。
引数は空白で区切られ、スペースかタブのどちらかです。
ダブルクォーテーションで囲まれた文字列は、空白に関係なく1つの引数として解釈されます。引用符で囲まれた の文字列を引数に埋め込むことができる。なお、キャレット(
^
は使用できません。 はエスケープ文字またはデリミタとして認識される。バックスラッシュを前にした二重引用符。
\"
は、リテラルなダブルクオーテーションマークとして解釈されます ("
).バックスラッシュは、二重引用符の直前でない限り、文字通りに解釈されます。
偶数個のバックスラッシュの後にダブルクォーテーションが続く場合、1個のバックスラッシュ(
\
に対して、argv 配列に配置されます。 バックスラッシュのペア(\\
)、ダブルクオーテーションマーク("
) は は文字列の区切り文字として解釈される。奇数個のバックスラッシュの後にダブルクォーテーションが続く場合、1個のバックスラッシュ(
\
に対して、argv 配列に配置されます。 バックスラッシュのペア(\\
と解釈され、ダブルクォーテーションは をエスケープシーケンスとみなし、残りのバックスラッシュによって、リテラル ダブルクォーテーション ("
)をargvに配置します。
と文書化されていない/公式でないルール( コマンドラインパラメータの解析方法 )
- 二重引用符で囲まれたブロックの外側には
"
は二重引用符で囲まれたブロックを開始します。- 二重引用符で囲まれたブロックの中に
"
の後に別の文字(別の"
が二重引用符で囲まれたブロックを終了させます。- 二重引用符で囲まれたブロックの中に
"
に続いて、すぐに別の"
(すなわち""
を使用すると、1つの"
が出力に追加され 二重引用符で囲まれたブロックが続きます。
このパーサーは、次のシーケンスを見ます。
\"
の末尾にある
"最初の"
をエスケープした引用であり、議論を終わらせたり閉じたりしていないため、議論の一部と見なされています。また
"starting"
の引用文は
"セカンド"
は二重引用符で囲まれたブロックを終わらせるだけで、引数を終わらせるわけではありません。
そのため と思われる コマンドライン引数が
v v v......argument delimiters
v.........v v..........v ......quoted blocks
xcopy "x:\souce\" "x:\target\"
^.......^ ^........^ ......argument data
arg #1 arg #2
arg #1 = x:\source\
arg #2 = x:\target\
で処理される実引数は
xcopy
は
v v .....argument delimiters
v......................v .....quoted block
xcopy "x:\souce\" "x:\target\"
^.....................^ .....argument data
arg #1
arg #1 = x:\source" x:\target"
終了バックスラッシュを削除したり、ドットを追加した場合、引数の閉じ引用はエスケープされず、引用ブロックを閉じ、引数間のスペースはデリミタとみなされます。
関連
-
[解決済み] Npm このコマンドを root/administrator で再使用してください。
-
[解決済み] Xcopyのエラーメッセージ「Sharing Violation」が誤っている。
-
[解決済み] npm windows install globallyでnpm ERR!余計なお世話になる。
-
[解決済み] 0|%0とは何ですか、どのように機能しますか?
-
[解決済み] ポート8005はWindows 10のシステムプロセスで使用されます。
-
[解決済み] Autohotkey Controlsendコマンドを理解する
-
[解決済み] PowerShellでTAB文字を入力するには?
-
[解決済み] ファイルパスの前に付ける「୧⃛(๑⃙⃘◡̈๑⃙⃘)୨⃛」は何ですか?
-
[解決済み] Windowsコマンドプロンプトのエイリアス
-
[解決済み] [Solved] バッチファイルを自動昇格させ、必要に応じてUACの管理者権限を要求するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】バッチ内のファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくない
-
[解決済み] PowerShell フォルダ権限エラー - 一部またはすべての ID 参照を変換できませんでした。
-
[解決済み] .batファイルのアイコンをプログラムで変更するには?
-
[解決済み] WPCups.exeとは何ですか?[クローズド]です。
-
[解決済み] Ahkファイルから.exeを生成すると、Heur.AdvML.Bが表示される。
-
[解決済み] Pythonの実行ファイル:py2exeかPyInstallerか?
-
[解決済み] Windowsでgl3wを設定するには?
-
[解決済み] PowerShellのコマンドラインからWindowsのバージョンを確認する方法
-
[解決済み] Windows (10)にPythonがインストールされているかどうかをテストし、インストールされていない場合はexeを実行してインストールするにはどうすればよいですか?
-
[解決済み] Windowsコマンドプロンプトのエイリアス