DOSコマンドを使用して、まだ存在していない可能性のあるディレクトリ構造にファイルをコピーするにはどうすればよいですか?ターゲットファイルの場所がまだ存在しない場合は、その場所へのディレクトリパスを強制的に作成できるようにする必要があります。
たとえば、この場所にはすでにfile.txtがあります。
C:\file.txt
そして、それをコピーしたい
C:\example\new\path\to\copy\of\file\file.txt
しかし、現時点では
C:\example\
また、すべてのサブディレクトリが存在する場合と存在しない場合があります。
基本的に、「必要に応じてターゲットパスをコピーして作成する」コマンドを探しています。これを実現する最良の方法は何をお勧めしますか?
ええ、それは xcopy です。これは次のようになります。
xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt
XCOPY情報
また、XPリソースキットとVista、Windows 7、およびサーバーの標準で、 [〜#〜] robocopy [〜#〜] を調べることもできます。 2008。
robocopy . c:\example\new\path\to\copy\of\file file.txt
私は次のようなものを使ってみました:
xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt
しかし、それがファイルかディレクトリかを尋ねてきます。それを40000ファイルのバッチファイルに入れていたので、実際的ではありません。このソリューションは、私の問題を部分的に解決するだけです。ディレクトリ構造を作成しますが、ユーザーの操作が必要です。私はここに私の問題の解決策を見つけました:
https://stackoverflow.com/questions/4283312/batch-file-asks-for-file-or-folder
基本的には、宛先ファイルの最後に「*」を追加することです。
xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt*
編集:@romkynsで指摘されているように、同じ名前と別の名前のファイル( 'file.txt.bak'など)がある場合、望ましくない結果になる可能性があります。上記と同じスレッドで機能する別の解決策は、「echo f」をコマンドにパイプすることです。
echo f | xcopy file.txt c:\example\new\path\to\copy\of\file\file.txt
別の言語で使用している場合に備えて、システムがファイルに使用する文字を「f」に置き換える必要があります。
DOS、すごい!とにかく [〜#〜] xcopy [〜#〜] コマンドを使用します。
copy
またはxCopy
を使用するかどうかにかかわらず、copy
からのエラーまたはxCopy
からのプロンプトを回避するために、必要なフォルダーの存在をテストして作成します。必要に応じて:
if not exist "NewPath" MkDir "NewPath"
copy "[path\]file.ext" "NewPath[\NewFileName.ext]"
または、1つのコマンドラインでコマンドを&&
と組み合わせます。
if not exist "NewPath" MkDir "NewPath" && copy "[path\]file.ext" "NewPath[\NewFileName.ext]"
move
の代わりにcopy
を使用しても同じことができます。私は StackOverflowanswer からこの手法についてmove
を使用してそれを行う方法について学びました。