2017-02-10 77 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