XCOPYを使用してコピーされたファイル名を適切に拡張する

XCOPYを使用してコピーされたファイル名を適切に拡張する

.cpp指定した場所からすべてのファイルをコピーするバッチスクリプトを作成しました。ファイルをコピーできますそしてフォルダ構造は保持されますが、コピーされたファイル名は適切に展開されません。これは可能な古いバージョンもありますが、すべてターゲットフォルダから新しいフォルダへ。新バージョンの目標はのみ特定のファイルタイプをコピーします。

XCOPYファイル名を適切に展開し、フォルダーの内容をすべてコピーする構文は次のとおりです。

ECHO D | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects" "Backup\Projects" /S /Q /N

コピーされたファイル タイプのファイル名を展開できない新しい構文を次に示します。

ECHO F | XCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects\*.cpp" "Backup\Projects\" /S /Q /N

以下は、ターゲット ディレクトリで取得する短縮/非展開ファイル名の例です。

WRNM~1.CPP

プロンプトオーバーライドコマンドが切り替わるかどうかはわかりません/S /Q /Nこれに影響していますが、コピーされるファイルの数が膨大であるため、プロンプトを上書きする必要があります。また、新しい構文でファイルをコピーしているにもかかわらず、スイッチを使用しXCOPYてターゲットをディレクトリとして定義した場合でも、ファイルをコピーできることにも注意してください。D

答え1

代わりに以下を使用して、すべての要件を満たすソリューションを見つけましたROBOCOPY

ROBOCOPY "%USERPROFILE%\Documents\Visual Studio 2017\Projects" "Backup\Projects" *.cpp /S

必要に応じて、スイッチを追加して空のフォルダーもコピーできます/E。以前これを試しましたが、ファイル タイプの定義を間違えてしまいました。

さらなるROBOCOPY資料SS64:

ロボコピー

答え2

Microsoft ドキュメントの xcopy

NTFS の短いファイル名またはディレクトリ名を使用してコピーを作成します。/n は、NTFS ボリュームから FAT ボリュームにファイルまたはディレクトリをコピーする場合、またはコピー先のファイル システムで FAT ファイル システムの命名規則 (つまり、8.3 文字) が必要な場合に必要です。コピー先のファイル システムは、FAT または NTFS にすることができます。

古いバージョンの xcopy では/n適切に処理されませんでした。xcopy /?オプションの意味が変わったかどうか、それぞれ確認してください。

関連情報