2011-04-27 99 views
1

我有一個包含例如文本文件:複製列表

c:\test\test1.txt;d:\test2\j.js;d:test2\2.cs 

我需要複製那些使用Windows命令行bat文件給定分隔的文件傳遞給bat文件的文件夾。我怎樣才能做到這一點?

回答

2

很容易,實際上是:

for /f %%l in (somefile.txt) do (
    for %%f in (%%l) do (
     copy "%%f" %1 
    ) 
) 

第一循環遍歷行明智過的文件;第二個將以分號分隔(以及其他事物,例如空格和逗號)。如果文件名稱看起來像你提供的那樣,它應該工作。

如果複製目標(S)看起來像也只是增加兩個循環,明顯:

for /f %%l in (somefile.txt) do (
    for %%f in (%%l) do (
     for /f %%k in (destination.txt) do (
      for %%g in (%%k) do (
       copy "%%f" %%g 
      ) 
     ) 
    ) 
) 
+0

工作像一條線分隔文件的魅力,正是我需要的.... – DSharper 2011-04-28 03:46:57

+0

什麼如果我需要複製目標將是這樣的 – DSharper 2011-04-28 08:56:13

+0

@Joey當我運行--------------- for/f %% l(d:\ BuildServer \ BuildScripts \ sourceFilelist.csv) do(for %% f in(%% l)do(for %% k in(d:\ BuildServer \ BuildScripts \ Destinationlist.csv)do(for %% g in(%% k)do(copy「%% f 「%% g))))------------- Destinationlist.csv文件替換爲源文件列表,並最終將其內容替換爲源文件列表的最後一個文件,並將cmd輸出打印% g和%k作爲字符自我,即不與分配給他們的值沒有工作,因爲我期望 – DSharper 2011-04-28 10:51:08

0

您可以從文件列表中的文件複製與下面的批處理文件命令:

for /f "usebackq delims=;" %%f in (filelist.txt) do copy %%f %1 

假設Filelist.txt中有一個單獨的行每個文件名:

c:\test\test1.txt; 
d:\test2\j.js; 
d:\test2\2.cs 

不知道如何儘管解析單行。