2017-02-10 110 views
0

早上好,設置變量值的循環

目前,我想要閱讀的,而不是使用定語句好幾次我想通過文件夾,在迭代的for循環多個目錄。

主要數據:

  • 當前語句:

ROBOCOPY C:\用戶\測試\ v2.5.0.0 C:\用戶\ enddir * .SQL

  • 現在我看到下面的代碼示例爲批次for循環

爲/升%%中的x(1,1,100)做(回波%% X MY ROBOCOPY STATEMENT)

  • 的目錄看起來有點像這樣
  • V2.5.0 0.0
  • v2.5.0.1
  • v2.5.0.3
  • v2.6.8.2
  • v2.7.4.3

我的想法是,有4個包膠的for循環來遍歷所有目錄重複,所以我能夠使用變量 例如:vW.XYZ代替v2.5.0.0

所以,點我的問題是:我如何設置和使用for循環中的變量,以便它具有當前迭代的值? 我習慣於java,如果這有助於解釋。

在此先感謝您的幫助。 :)

如果有一些信息丟失,我很樂意提供更多!

編輯: 代碼,我想將工作

for /l %%w in (1, 1, 100) do (
    for /l %%x in (1, 1, 100) do (
    for /l %%y in (1, 1, 100) do (
     for /l %%z in (1, 1, 100) do (
      robocopy C:\Users\test\v%%w.%%x.%%y.%%z C:\Users\enddir *.sql 
      ) 
     ) 
    ) 
) 
+2

你真的想要櫃檯嗎?你能不能用'for/D'來循環文件夾,例如(c:\ users \ test \ *)中的for/D%f做@echo%f'?也http://stackoverflow.com/questions/817280/how-does-for-work-in-cmd-batch-file和相關鏈接。 – TessellatingHeckler

+1

當前迭代的值存儲在參數變量中。所以你可以使用'echo v %% W。%% X。%% Y。%% Z'來實現你的結果。如果這不是你的意思,我建議你展示你的腳本的骨架更好地理解:) – geisterfurz007

+0

@TessellatingHeckler 可惜不是因爲有不同的目錄也是一樣,我只想說,目錄5.2至7.4 –

回答

1

您可以輕鬆地使用一個for循環中一批與/l開關,實現了couting的循環如在你的榜樣。這些可以被嵌套,以及這樣的:

@echo off 
for /l %%w in (1, 1, 10) do (
    for /l %%x in (1, 1, 10) do (
    for /l %%y in (1, 1, 10) do (
     for /l %%z in (1, 1, 10) do (
     echo currently at v%%w.%%x.%%y.%%z 
    ) 
    ) 
) 
) 

既然上面已經顯示出在你的問題幾乎一模一樣,我建議一些補充:

if exist C:\Users\test\v%%w.%%x.%%y.%%z (前和後一個右括號的行應該添加到你的robocopy行,以確保你想複製的目錄實際存在。

+0

所以它就像我以爲,非常感謝你! 「@echo off」是否重要? (和漂亮的用戶名; P) –

+1

@迴響防止可能惱人的命令行輸出是不是真的neccessary,這並不重要,但我通常包括它。謝謝;) – geisterfurz007