批处理 数组 变量

现在我有一段代码操作一个目录。现在可能会操作多个目录,我想在开始写完所有的目录名称,然后重复调用那一段代码,请问该怎么写呢
假如那一段重复代码是A,目录用变量var代替。请帮我一下

参考:

@echo off
set "var=d:\ e:\ f:\"
for %%a in (%var%) do call :a "%%a"
echo 调用完成。。
pause>nul&exit /b
:a
echo 开始调用变量var中的%~1
pause>nul
dir %~1
goto :eof

追问

形式对了,如果我的目录名中有空格怎么办呢

追答

空格比较特殊,就不能直接用FOR提取了。变通的方法也很多,比如先把VAR分行写入一个临时文件,再从临时文件里取,又或设置VAR时把空格用一个不出现的符号代替,调用前再把符号替换成空格。这里举个写入临时文件的:
@echo off
>$ (echo d:\
echo e:\dd dd
echo f:\123\12 3
)
for /f "delims=" %%a in ($) do call :a "%%a"
echo 调用完成。。
pause>nul&exit /b
:a
echo 开始调用变量var中的%~1
pause>nul
dir "%~1"
goto :eof

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-22
xxpinqz 网友 为什么不采用引号把带空格的目录名括起来呢 类似:
set var=d:\ "e:\a b\" f:\
for %%a in (%var%) do call :a "%%~a"
不过for 命令本身就是循环命令,可能的话最好把那段需要循环执行的命令直接添到for 循环内执行效率高一些, 但要注意也许需要启用变量延迟扩展本回答被网友采纳
相似回答