バッチファイル XCOPY が既存のディレクトリを見つけられません

バッチファイル XCOPY が既存のディレクトリを見つけられません

XCOPYC# プロジェクトを別のドライブにコピーするための小さなバッチ ファイルを作成しています。フォルダー全体をコピーするために使用しています(まだ XP マシンがいくつかあるため、robocopyこれはオプションではありません)。ただし、バッチ ファイルを実行すると、指定されたファイルが見つからないというメッセージが表示されます (なぜフォルダーではなくファイルを検索するのかはわかりません)。

これが私のフォルダ構造です。ドライブ上のフォルダfolderにコピーしたいと思います。program\dstO

src
-folder
-batchFile.bat

O
-program
--dst    

私のbatchFile.batには次の行が含まれています

XCOPY  ".\folder" "O:\program\dst" /E

これを実行すると、次のように表示されます。

File Not Found - folder

確かに存在しているにもかかわらず (ファイルとしてではなく、フォルダーとして)。

答え1

他の回答が示唆しているように、使用は.\folder現在のディレクトリから開始されますが、バッチ ファイルの場所が必要です。

XCOPY  "%~dp0folder" "O:\program\dst" /E

cd最初にフォルダーに移動することもできますが、これはよりエレガントだと思います。

答え2

これを試してみたところ、うまくいきました。バッチ ファイルへのショートカットを作成しており、開始ディレクトリが正しくないのではないかと思います。その場合は、cdバッチ ファイルの先頭にディレクトリを変更するコマンドを追加するとsrc修正されるはずです。または、folder相対パスではなく絶対パスを使用してください。

cd "C:\Whatever\src"
XCOPY ".\folder" "O:\program\dst" /E

または

XCOPY "C:\Whatever\src\folder" "O:\program\dst" /E

答え3

スクリプトでは、CMD ファイルの先頭に以下のコマンドを配置します。

「%cd%」をエコーし​​ます

次に、このコマンドによって何が生成されるかを確認します。

「フォルダ」ディレクトリのフルパスが「C:\ABC\folder」の場合、echo「%cd%」コマンドの出力は「C:\ABC」になります。ただし、これと異なる結果が表示される場合は、XCOPY コマンドでファイルが見つからないというエラーが発生します。これは、XCOPY が「フォルダ」がディレクトリかファイルかを判断できず、デフォルトでファイルであると想定するため、正常な動作です。

関連情報