2017-10-03 5 views
0

ソースファイルとターゲットフォルダの両方がソースファイルから与えられる別のフォルダに、コンテンツを含むフォルダをバッチファイルにコピーするのを助けることができます。 例:入力ファイルから複数のXCOPY倍数

\\server1\folder1 \\server3\folder1 /E /C /I /Q /G /H /R /K /Y /Z /J 
\\server1\folder2 \\server3\folder2 /E /C /I /Q /G /H /R /K /Y /Z /J 
\\server2\folder1 \\server3\folder3 /E /C /I /Q /G /H /R /K /Y /Z /J 
\\server2\folder9 \\server3\folder4 /E /C /I /Q /G /H /R /K /Y /Z /J 
... 

私はFORコマンドを使用する必要がありますが、構文のヘルプが必要と思います。 ソースとデスティネーションを含む入力ファイルはどのように見えるでしょうか?

+0

UNCパスは通常2つのスラッシュで始まります。ですから、ソースとデスティネーションで区切られたファイルを作成し、そのファイルを読むための 'FOR/F'コマンドを使うことができます。 XCOPYの代わりにROBOCOPYを使用することをお勧めします。 – Squashman

+0

あなたはこれまでに何を試しましたか、どこに止まっていますか? – aschipfl

答えて

0

入力ファイルを想定すると、「C:\ input_file.txt」で、確かに何が起こっているかを確認するには、このような何かを実行し、...

FOR /F "tokens=* delims=? usebackq" %%A IN ("C:\input_file.txt") DO echo %%A 
FOR /F "tokens=* delims=? usebackq" %%A IN ("C:\input_file.txt") DO xcopy %%A 
pause 

あなたはこのかかわらを必要とする一日の終わりに...

FOR /F "tokens=* delims=? usebackq" %%A IN ("C:\input_file.txt") DO xcopy %%A 

説明...

ドキュメントFor /Fループ上とxcopy

For /F入力ファイルを1行ずつループします。各行ごとに、行を分割します。これらの部分は「トークン」と呼ばれます。デリミネーター(delims)と呼ばれるキャラクターによって、作品が認識されます。これは、各行の個々の部分で作業できるように行われます。しかし、あなたの場合は、ラインを分割する必要はありません。彼らはすでに引数としてフォーマットされています。ですから、 "?"のようなもっと不明瞭なファイルパス文字を使用してください。あなたのデリミネーターとして。それがそこにはないと賭けることができるので、あなたはあなたの全体の行を一つのトークンとして得るでしょう。

tokens = *を設定すると、すべてのトークンが取得されますが、トークンが1つだけの場合は、tokens=1となります。

usebackqおそらく入力ファイルパスの前後に引用符を使用してパス内のスペースを処理できるようにすることをお勧めします。

次に、あなたはちょうどあなたがEchoまたはxcopyのようなコマンドを使用し、引数としてトークンを渡すことができますFor /Fのコマンド部分を持っています。すでに述べたように、テキストは複数の引数としてすでにフォーマットされているため、テキスト全体を単一のトークンとして渡すことができます。

また、あなたの作業システムはxcopyを使用するように設計されているようですので、それに固執するのが一番良いかもしれませんが、RoboCopy is a good alternativeです。

関連する問題