将变量值设置为for循环

时间:2017-02-10 06:48:27

标签: batch-file

早上好,

我目前正在尝试读取多个目录,而不是多次使用给定语句,我想迭代for循环中的文件夹。

关键数据:

  • 当前声明:
  

robocopy C:\ Users \ test \ v2.5.0.0 C:\ Users \ enddir * .sql

  • 现在我看到了批处理循环的以下代码示例
  

for / l %% x in(1,1,100)do(echo %% x MY ROBOCOPY STATEMENT)

  • 目录看起来有点像这样
  • v2.5.0.0
  • v2.5.0.1
  • v2.5.0.3
  • v2.6.8.2
  • v2.7.4.3

我的想法是,有4个封装for循环遍历所有目录,所以我能够使用变量 例如:vW.X.Y.Z而不是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
            )
        )
    )
)

1 个答案:

答案 0 :(得分:1)

您可以轻松地使用/l开关批量使用for循环来实现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
      )
    )
  )
)

现在上面已经几乎完全显示在你的问题中,我建议添加一些内容:

应该在您的robocopy行周围添加前面的行if exist C:\Users\test\v%%w.%%x.%%y.%%z (和后面的行中的右括号,以确保您要复制的目录实际存在。