あるフォルダーから別のフォルダーにファイルをコピーするバッチファイル


235

ネットワーク上にすべてのユーザーがサーバーにアクティブデータを保存するストレージフォルダーがあります。ここで、サーバーは場所の問題により新しいサーバーに置き換えられるため、古いサーバーストレージフォルダーから新しいサーバーストレージフォルダーにサブフォルダーファイルをコピーする必要があります。私は以下の例を持っています:

\ Oldeserver \ storage \ data&filesから\ New server \ storage \ data&filesへ。


3
私はあなたがWindows環境について話していると思いますか?
アランプラム


4
@ HugoM.Zuleta、私は.batファイルを知っています。ただし、「バッチファイル」は必ずしもWindows環境を保証するものではありません。(.batファイルと同様に)Windowsの前の用語の使用は、初心者が* nix環境で「シェルスクリプト」を意味するためにこの用語を使用するのを見たことさえあります。
アランプラム

1
@pluma同意します。これは主に、OSのスクリプトツールによって実行されるバッチ操作を参照しているためです。
Hugo M. Zuleta

回答:


441

xcopy.exeは間違いなくあなたの友達です。Windowsに組み込まれているため、コストはかかりません。

ただ xcopy /s c:\source d:\target

あなたはおそらくいくつかのことを微調整したいと思うでしょう。追加するオプションには、次のものがあります。

  • /s/e -空のディレクトリのコピーを含む、再帰的なコピー。
  • /v-これを追加して、コピーをオリジナルに対して検証します。より遅いが、偏執狂のため。
  • /h -システムと隠しファイルをコピーします。
  • /k-ファイルとともに読み取り専用属性をコピーします。そうしないと、すべてのファイルが読み書き可能になります。
  • /x-権限を気にする場合は、/oまたはを使用し/xます。
  • /y -既存のファイルを上書きする前にプロンプ​​トを表示しません。
  • /z-コピーが失敗する可能性があると考え、それを再起動する場合は、これを使用します。コピー時に各ファイルにマーカーを配置するため、xcopyコマンドを再実行して、中断したところから再開できます。

xcopyが途中で失敗する可能性がある場合(不安定なネットワーク接続を介してコピーしている場合など)、または停止して後で続行する必要がある場合は、を使用できますxcopy /s/z c:\source d:\target

お役に立てれば。


2
@Iavinioアーカイブをコピーするときにファイルまたはディレクトリを要求しています。それを抑制する方法はありますか?
Bitterblue 2013年

こんにちは@ mini-me-ディレクトリの場合、末尾の「/」文字を指定しても、そのメッセージは表示されないことがわかりました。
DaveDev 2013

2
/i-宛先が存在せず、複数のファイルをコピーする場合、宛先はディレクトリーでなければならないものと想定します。
lavinio 2013年

1
ディレクトリから単一のファイルをコピーするにはどうすればよいですか?
Charan Raju CR

10
「ファイルまたはディレクトリ」プロンプトを回避するには、次のようなコマンドを実行します... echo f | xcopy /s /f srcfile destfile
wintondeshong

56

データをバックアップするための私のお気に入りは:

ROBOCOPY "C:\folder" "C:\new_folder" /mir

/ mirはミラー用です。/ movを使用してファイルを移動することもできます。まったく同じフォルダを再現します。必要に応じてファイルを削除/上書きできます。私にとってはうまくいきます。xcopy / copyよりも高速です。Windowsにも組み込まれています。

ソース:http : //technet.microsoft.com/en-us/library/cc733145.aspx


2
私はこれを支持します。本当に速いです。xcopyよりはるかに高速
Ike

これに似たthumbs.dbを再帰的に削除する方法はありますか?
drooh

54

明確にするためにxcopy /s c:\source d:\target、を使用する場合は、c:\ sourceとd:\ targetの前後に ""を付けてください。

つまり、パスにスペースがある場合、つまり次の場合:

"C:\Some Folder\*.txt"

ただし、次の場合は必要ありません。

C:\SomeFolder\*.txt

1
引用符でトリックを作成しました;)ファイルが存在する場合は、ファイルを置き換えるために/ Yも使用しました:)例:´´´xcopy / s "c:\ source" "d:\ target" / Y```
Joelカルネイロ2018

18

Windowsでのほぼすべてのファイルコピー操作に対応する非常に包括的なソリューションであるXCopyまたはRoboCopyご覧ください。


3
xcopyはファイルまたはフォルダーの決定を要求するため、RoboCopyはXCopyよりも優れているようです。そして、私はそれを断ることはできません。全自動で動作する必要があります。
Bitterblue 2013年

@ mini-me私はこれが非常に遅いことを知っていますが、同じ関連スイッチを見つけることができません。コピー先のファイルと同じ名前の空のファイルを作成して上書きすることにしました。ファイルがすでに存在する場合は、そのファイルまたはディレクトリかどうかを尋ねる必要はありません。(自動ディレクトリが必要な場合は、パスに「/」を追加することができます)。これが将来の人々に役立つことを願っています!
トムC

2
@Eve参考までに、echo f | xcopy source destination /y自動化します。すべての質問に回答として「f」を割り当てます。また、上書き要求も通過します(fはyesと見なされます)。
ndm13 2014年

14

「ターゲット上のファイル名またはディレクトリ名を指定してください(F =ファイル、D =ディレクトリ)」をバイパスするには xcopyでプロンプトを表示すると、次のことができます...

echo f | xcopy /f /y srcfile destfile

または、大規模なサブストラクチャー/フォルダーをコピーするだけの場合:

複数のファイルをコピーする場合、宛先がディレクトリでなければならないことを指定する/ iを使用します。


(ファイルの場合は「f」、ディレクトリの場合は「D」)
JinSnow

これを今やろうとすると、うまくいきません-あるファイルを別のディレクトリにコピーしようとすると、常にプロンプ​​トが表示されます。Win 10の使用が影響を与える場合は、echo f | xcopy / f / y "My.dll" "C:\ myFolder \ My.dll"。私は他のスイッチの組み合わせを試してみましたが、無駄になっています(そして大文字のF)
教授

3

絶対パス、つまり相対パスを使用せずにファイルをコピーする場合:

パスにバックスラッシュを書くことと、スラッシュを忘れないこと

例:

    copy children-folder\file.something .\other-children-folder

PS:「バッチパラメータ」と呼ばれるこれらのワイルドカードを使用して絶対パスを取得できます

    @echo off
    echo %%~dp0 is "%~dp0"
    echo %%0 is "%0"
    echo %%~dpnx0 is "%~dpnx0"
    echo %%~f1 is "%~f1"
    echo %%~dp0%%~1 is "%~dp0%~1"

コピーについては、こちらのドキュメントを確認してください:https : //technet.microsoft.com/en-us/library/bb490886.aspx

また、バッチパラメータのドキュメントについては、https//www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr = true


\はバックスラッシュと呼ばれていると思います。
Leon Bohmann

2
@echo off

rem The * at the end of the destination file is to avoid File/Directory Internal Question.

rem You can do this for each especific file. (Make sure you already have permissions to the path)
xcopy /Y "\\Oldeserver\storage\data\MyFile01.txt" "\\New server\storage\data\MyFile01.txt"*
pause

rem You can use "copy" instead of "xcopy "for this example.

0

rsyncベースのWindowsツールNASBackupを見てください。rsyncコマンドに精通している場合は、ボーナスになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.