写一个循环& Windows批处理脚本的变量

时间:2016-02-06 00:25:45

标签: batch-file cmd

我是一个Windows批量屏幕菜鸟。所以我需要编写一个执行此操作的脚本:

pushd \\network.com\shared\folder\201501
copy resume*.zip c:\temp\

每次迭代将“201501”更新为201502,201503等。我显然可以写出相同内容的12行,但我想更好地学习循环语法。

我知道我可以用

写一个循环
for /l %x in (1, 1, 12) do (
)

但我不确定如何使“201501”成为该路径字符串中的变量,该变量随整数变化,我不知道如何使其处理“01”与“12”问题。 (即:201501 - > 2015012而不是201512)

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

这将帮助您入门。请注意,您在CMD提示符中使用%x,在bat文件中使用%% x。我使用L代替l,因为l看起来太像1了。

@echo off
for /L %%x in (201502, 1, 201512) do echo(%%x
pause

答案 1 :(得分:2)

RGuggisberg的回答完全有效。只是延长它几年(可能是你的下一个问题):

setlocal enabledelayedexpansion
for /L %%y in (14,1,16) do (
  for /L %%m in (1,1,12) do (
    REM add a leading zero:
    set "month=0%%m"
    REM take the last two digits from month:
    echo 20%%y!month:~-2!
    pushd "\\network.com\shared\folder\20%%y!month:~-2!"
    copy "resume*.zip" "c:\temp\"
    popd
  )
)