2012-03-22 96 views
0

好的傢伙,我是相當新的使用批處理文件工作,我有我以前創建兩個文件它們都工作independantly。在批處理文件中組合兩個FOR命令(/ F/L)

我期待將它們結合起來,但我還是不完全瞭解FOR命令。我希望有人可以將這兩組代碼合併爲一組,如果可能的話,解釋一下如何使用我的兩個源代碼。

  1. 此文件副本另一個文件(在這種情況下的test.txt),以每子目錄的目錄中

FOR /R d:\ %%A IN (test.txt) DO copy d:\%username%\Desktop\Test\Resources\test.txt %%A
FOR /R h:\ %%A IN (test.txt) DO copy d:\%username%\Desktop\Test\Resources\test.txt %%A

  1. 該文件拷貝和重命名的另一個次文件X量(在這種情況下5)以1爲增量重命名每個連續副本。

For /l %%1 in (1,1,10) do ( copy test.txt test%%1.txt > nul )

基本上我想選擇的文件(的test.txt)被從一組位置複製到每個子目錄的目錄內,然後在次每個文件夾X量複製,並用例如增加的值重命名

test1.txt的

的test2.txt

test3.txt

三江源提前。

回答

2

這其實很直截了當。

您已經運行的代碼,從源到每個子目錄拷貝。在僞代碼中:FOR (each directory) DO COPY source to target

你也有代碼,可以在文件10倍遞增的名稱複製。您想在第一步中爲每個目錄執行此操作。所以,再次在僞代碼,它會是這個樣子:

FOR (each directory) DO (
    COPY source to target 
    FOR (N=1 TO 10) DO COPY source to targetN 
) 

上面的語法都不是真實的,除了DO後的括號實際上是如何讓一個批次要執行的命令塊多個命令。 (其實還有其他的技術來做到這一點,但括號工作得很好。)

您缺少的部分是如何插入的數目遞增到%%目標名稱。這是通過使用FOR變量改性劑進行,如在,你可以在命令行鍵入HELP FOR,或FOR /?訪問有關文檔的結束描述。

修飾符讓你解構一個文件規範成其組成部分。請注意,文件不必物理存在,文件規範仍可以分解爲組成部分。

  • %%~dpnA =驅動器:\路徑\ baseName的(沒有擴展名)
  • %%~xA =。擴展名,包括點。

您已經獲得遞增數字 - 我將使用%%N而不是%%1。所以完整的目標將是3個組件的連接:%%~dpnA%%N%%~xA

全部放在一起給出了完整的解決方案:

FOR /R d:\ %%A IN (test.txt) DO (
    copy d:\%username%\Desktop\Test\Resources\test.txt %%A 
    FOR /L %%N IN (1 1 10) DO copy d:\%username%\Desktop\Test\Resources\test.txt %%~dpnA%%N%%~xA 
)