我试图使用批处理脚本在每台实验室计算机上打开一个文件夹。计算机标记为01,02,03-18。我不认为有一种方法可以将数字从1转换为01,所以我使用了if语句。但我收到的错误是9 was unexpected at this time
@echo off
setlocal enabledelayedexpansion
SET "z=0"
SET "n=9"
for /L %%x in (1,1,18) do (
SET v=%%x
IF %v% LEQ %n%
(
SET num=%z%%v%
) ELSE (
SET num=%v%
)
start "" "\\lab-!num!\
pause
)
答案 0 :(得分:2)
您在括号内放置时遇到问题(请参阅here),以及延迟扩展的使用不一致(您使用的是!num!
但不是!v!
,这两个变量是更改代码块内部)但可以通过在for
循环的值中包含填充来简化代码
for /l %%x in (1001, 1, 1018) do (
set "num=%%x"
start "" "\\lab-!num:~-2!\share\folder"
)
答案 1 :(得分:1)
启用delayed expansion
时,请在内部使用感叹号进行循环。
不要忘记,左括号必须与if
@echo off
setlocal enabledelayedexpansion
SET "z=0"
SET "n=9"
for /L %%x in (1,1,3) do (
SET v=%%x
IF !v! LEQ !n! (
SET num=!z!!v!
) ELSE (
SET num=!v!
)
start \\lab-!num!\
pause
)