XCOPY
C# プロジェクトを別のドライブにコピーするための小さなバッチ ファイルを作成しています。フォルダー全体をコピーするために使用しています(まだ XP マシンがいくつかあるため、robocopy
これはオプションではありません)。ただし、バッチ ファイルを実行すると、指定されたファイルが見つからないというメッセージが表示されます (なぜフォルダーではなくファイルを検索するのかはわかりません)。
これが私のフォルダ構造です。ドライブ上のフォルダfolder
にコピーしたいと思います。program\dst
O
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 が「フォルダ」がディレクトリかファイルかを判断できず、デフォルトでファイルであると想定するため、正常な動作です。