コマンドラインを使用して、あるディレクトリを別のディレクトリにコピーしたいのですが。例えばディレクトリがあります C:/test
そして C:/test2
。
コピーしたい C:/test
に C:/test2
結果がになるように C:/test2/test
これまでに見つけたものはすべて、に含まれているファイルとフォルダだけをコピーします。 C:/test
に C:/test2
ただし、親ディレクトリは除外されます。
コマンドラインを使用して、あるディレクトリを別のディレクトリにコピーしたいのですが。例えばディレクトリがあります C:/test
そして C:/test2
。
コピーしたい C:/test
に C:/test2
結果がになるように C:/test2/test
これまでに見つけたものはすべて、に含まれているファイルとフォルダだけをコピーします。 C:/test
に C:/test2
ただし、親ディレクトリは除外されます。
回答:
使ってみる XCOPY
とともに /E
スイッチ。より詳しい情報 ここに 。
私は私の脳からこの情報にアクセスする必要はありませんでした 年 !
更新
ドキュメントには、ソースディレクトリからすべてのファイルとサブディレクトリがコピーされる(つまり、親ディレクトリは作成されない)と書かれているので、作成する必要があります。 test
に C:\test2
最初に使用してから使用する XCOPY
。
robocopy /CREATE /COPYALL /DCOPY:T src dst
フォルダと空のファイルをコピーするだけで、すべてのタイムスタンプとその他の属性を保持します。
test
まだ作成する必要があります。
md test
そしてそれから xcopy
自明のことでした。
copy
フォルダは新しいフォルダを作成せず、その中のコンテンツをコピーします。
バックアップスクリプトを作成する場合は、ROBOCOPYを使用してください。 xcopyは廃止予定であり、近い将来使用されなくなる可能性があります。 robocopyはxcopyができることすべてを実行できます。それはまたより柔軟で信頼性があります。 robocopyを使ってスクリプトを作成することは、将来的にそれらを証明するでしょう。
robocopyを使用して簡単にフォルダをコピーするrobocopyコマンドは、xcopyコマンドに代わるものです。内容の定義を気にせずにフォルダ全体をすばやくコピーできます。たとえば、C:\ toolsディレクトリのすべての内容を新しいフォルダD:\ backup \ toolsにコピーするには、次のように入力します。
robocopy C:\tools D:\backup\tools /e
/ e修飾子は、robocopyにすべてのサブディレクトリを含めるように指示します。これには空のフォルダも含まれます。 robocopyは自動的に隠しファイルとシステムファイルをコピーします。それらがターゲットの場所に存在しない場合、それは新しいディレクトリを作成します。
ディレクトリをミラーリングします。ディレクトリをミラー化することは、バックアップを作成するのに最適です。 robocopyのミラーオプションは、コピー元からコピー先にすべての内容をコピーします。それはそれからソースで存在しない目的地で何かを削除します。これにより、バックアップに最新バージョンのファイルのみが含まれるようになります。たとえば、C:\ Users \ My DocumentsをD:\ backup \ My Documentsにミラーリングするには、次のように入力します。[4]
robocopy "C:\Users\My Documents" "D:\backup\My Documents" /mir
この機能はオリジナルファイルの全てのパーミッションを保存します。
再起動を有効にします。接続がコピーの途中で切断された場合に備えて、プロセスを再開する機能を含めることができます。
robocopy "C:\Users\My Documents" "D:\backup\My Documents" /z
コピー処理をログに記録します。 robocopyを使用すると、ログファイルを作成できます。これにより、問題を特定したり、コピーされた内容のアーカイブを生成したりできます。
robocopy "C:\Users\My Documents" "D:\backup\My Documents" /log+:<filename>.txt
/ log +修飾子は既存のログファイルを上書きするのではなく追加します。古いログファイルを上書きするだけの場合は、/log:.txtを使用します。
私はお勧め ロボコピー オーバー xcopy タイムスタンプをそのままにしておくことを含む、もっと多くの選択肢があるので、それは私が不可欠だと思う。
RobocopyはXP / 2003に追加される必要があります、しかしそれはVista以降の標準です。
私は実際にいつも使う xxcopy しかし、64ビット版は無料ではありません。
robocopy
Windowsプログラムです。問題はDOSについてでした。
XCOPY SourceDrive: DestinationDrive: /S /E
たとえば、コピーが必要な場合 E:
ドライブデータ H:
コマンドラインまたはxbootコマンド環境からdrive(外付けハードドライブ)を起動します。
xboot:\>XCOPY E:\ "H:\BackupFolder\" /S /E
最初の質問が私がそれに対する答えを探していたものであるならば、私は、そして明らかに上記の誰も、明確な解決策を思い付いていません。
私が探しているのは、テストディレクトリをもう一度入力しなくてもtest2ディレクトリにコピーすることです。何かのようなもの
xcopy /isvy c:\test d:\test2
どこで d:\test2\test
コピーの前には存在しませんが、後には存在します。これにより、宛先パスで2回目のタイプミステストを省くことができます。上記のコマンドはすべてのファイルとディレクトリをtest2にコピーしますが、testディレクトリは作成しません。
これまでのところ
xcopy /isvy c:\test d:\test2\test
この仕事をやり遂げるために私が見つけたのは本当に唯一の方法です。入力の問題がある場合も、ソースディレクトリと宛先ディレクトリが一致するという保証はありません。
これを修正する別の方法は
set mydir=test&&xcopy /isvy c:\%mydir% c:\test2\%mydir%
これはコピー先ディレクトリを設定します。 mydir
その後、variableは送信元パスと送信先パスの両方でその変数を使用します。あなたが間違った変数をタイプするならば、あなたはエラーを得るか、あるいは行き先ディレクトリはおそらく持っているでしょう %
始めと終わりに。
入力するのは長くなりますが、間違った名前を付ける可能性は低くなります。それらは目立つでしょう。
xcopy /ievy c:\test d:\test2\test
ディレクトリツリー構造を維持するため set mydir=test&xcopy /isvy c:\%mydir% c:\test2\%mydir%
たった1つ &amp; 値を設定した結果は常に成功するので十分です。
xcopy SWITCHES SOURCE DESTINATION
どこで SWITCHES
することができます:
ディレクトリ構造全体をコピーするには
/hiev
保存先のファイルを上書きするには(保存先フォルダがすでに存在する場合):
/hievry
ACL +属性で上書きコピーするには:
/hievxok
あなたのケースに最適です:
xcopy /hievry C:\test C:\test2\test
フォルダー名を含む多数のフォルダーをコピー先の場所にコピーする必要があるという同様の状況がありました。この質問に「回答済み」のマークが付いていれば助かりますが、実際にはそうではありません。
まず、この機能が必要になることが確実にあり、C:\ Windows \ Assembly \ GAC_MSILからフォルダーをコピーしなければならなかったときに私は1つに遭遇しました。 Windowsエクスプローラはこのフォルダの表示を拒否しているので、コマンドプロンプトを使用する必要があります。
GACフォルダに精通している場合は、フォルダ名は重要ではなく、誤入力しても間違えやすいということをご存知でしょう。
そのため、ディレクトリを事前に作成することは、スクリプトを使用しない限り、実際には選択肢になりません。これが唯一の本当の解決策なので、これを使用してしまいました。
まずコピーしたいフォルダを一時ファイルにダンプします。これは通常いくつかのパターンに基づいています。
dir /B policy* > Folders.txt
その後、ダンプ内のエントリーをループして宛先にコピーします。 destination引数をバックスラッシュ(\)で終了すると、Xcopyはフォルダを作成します。
for /F "tokens=*" %%A in (Folders.txt) do xcopy /E /S %%A C:\Dest\%%A\
これら両方のコマンドをバッチファイルに入れて実行します。
xcopyかrobocopyだけがこれを組み込んでいるなら今。
私はあなたの質問に対して機能的な代替回答を見つけました。
まず、 FORFILES
と /S
パラメータ、その中のすべてのサブディレクトリに C:\test
に達するでしょう。
次に、と /C
パラメータを指定すると、ネイティブ変数で一連のコマンドを開始することができます。これにより、宛先に同一のディレクトリを作成し、2つの条件付き構造を使用してファイルをその内部にコピーできます。
最初の条件付き構造 @isdir==TRUE
(必ず大文字を使用してください)、ソースからのみディレクトリを取得し、そして運命にそれらを作成することができます MKDIR [path]\@relpath
最後に。
最後に、2番目のものはそれだけでファイルを扱っていることを確認します @isdir==FALSE
その後、COPYコマンドは単にジョブを完了させ、すべてのファイルをFORFILESコマンドで到達させて設定します。 [path]@relpath
保存先として、作成したばかりのディレクトリ内にファイルをコピーします。
forfiles /s /c " cmd /c ( if @isdir==TRUE mkdir C:\test\@relpath ) && ( if @isdir==FALSE copy @file C:\test2\@relpath)"
それがこの辺のみんなに役立つことを願っています。
これはGUIから行います、彼らがどのようにそれをするのかわからない。
"...小さなプログラムでは" from directory "と" into directory "を選択でき、ディレクトリ構造のみをコピーします。"