web-dev-qa-db-ja.com

DOSのディレクトリにファイルをコピーし、必要に応じてディレクトリを作成する方法は?

DOSコマンドを使用して、まだ存在していない可能性のあるディレクトリ構造にファイルをコピーするにはどうすればよいですか?ターゲットファイルの場所がまだ存在しない場合は、その場所へのディレクトリパスを強制的に作成できるようにする必要があります。

たとえば、この場所にはすでにfile.txtがあります。

C:\file.txt

そして、それをコピーしたい

C:\example\new\path\to\copy\of\file\file.txt

しかし、現時点では

C:\example\

また、すべてのサブディレクトリが存在する場合と存在しない場合があります。

基本的に、「必要に応じてターゲットパスをコピーして作成する」コマンドを探しています。これを実現する最良の方法は何をお勧めしますか?

40
nodmonkey

ええ、それは 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
29
b w

私は次のようなものを使ってみました:

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」に置き換える必要があります。

19
msb

DOS、すごい!とにかく [〜#〜] xcopy [〜#〜] コマンドを使用します。

3
Dustin Laine

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を使用してそれを行う方法について学びました。

1
NewSites