copy
は、ソースでワイルドカード(*?)が使用され、出力名が指定されている場合、ほぼ空の(1K)ファイルを作成します。
copy /D /V *?ample.png %homepath%/example.png
一部のファイルタイプ(.txt .rtf)で機能しますcopy /D /V *?ample.txt %TEMP%\example.txt
興味深いことに、ソースと宛先の両方のワイルドカードでこれが修正されます。copy "*xample.pdf" "%TEMP%/*xample.pdf"
しかし、ファイル名を台無しにすると、次のようになります:le.pdfxample.pdf
これはバグですか、それとも悪い構文ですか?私は困惑しています。
私はWindows7x86_64を使用しています
関連する質問
DOS COPYコマンドでwildardを使用すると、宛先ファイルが破損します
Windowsでワイルドカードを使用してファイルを追加せずにコピーするにはどうすればよいですか?
これは(誤用された)機能だと思います。
My Windown 10 help copy
言う:
ファイルを追加するには、宛先に1つのファイルを指定し、ソースに複数のファイルを指定します(ワイルドカードまたはfile1 + file2 + file3形式を使用)。
ファイル形式が単純に連結されたソースファイルをサポートしていない場合は、これを覚えておくのはユーザーの責任です。
また バリの答え あなたの最初のリンクへはあなたの質問に完全に答えます。
名前が不明なソースファイルが1つしかない場合の別の回避策は、次のとおりです。
for %A in (*?ample.png) Do copy "%A" "%homepath%/example.png"
copy
はiファイルのタイプを知っている必要があります: "ASCII text"/A
または「バイナリファイル」/B
バイナリファイル/B
は、ファイルを結合しない限り想定されます。
ただし、ソースにワイルドカードを挿入し、ファイルを結合する出力名を指定すると、Windowsは「想定」し、「ASCIIテキスト」インタープリターを使用するため、1Kの空のファイルを作成します。
したがって、/B
パラメータ(バイナリファイルを示します)
出力名が指定されたソースでワイルドカードを使用する場合は、使用する必要があります。
すべての非「ASCIIテキスト」ファイル。
copy /B /D /V *?ample.png %homepath%/example.png
それをバグ、愚かなマイクロソフトの機能と呼んでください、しかしそれはそれがそうである方法です。
ワイルドカードの使用に関する1つの問題...(潜在的に)多くのファイルを1つのターゲットにコピーし、この貧弱なファイルを何度も無用に上書きしています:)。しかし、それはこの興味深い「機能」を引き出しました。 DOSフロッピーを取り出して、バグがそれほど古いかどうかを確認したいと思います。
DIRでこの興味深いバグを見つけて、おめでとうございます!コピーされたファイルは破損してしまいます。これは非常に一貫性があり、/ D/Vスイッチに依存せず、同じファイルを何度も上書きする場合にのみ発生します。 xcopyを使用している場合、このバグは発生しません。これは、すべてのWindowsユーザーにとって朗報です。