您当前位置: 首页 »

Shell

标签归档: Shell

The damn “for” in batch file!

本来想在单个批处理文件里面实现类似下面的操作:

@echo off
SET num=0
FOR /D %%i IN (*) DO (
SET /a num=%num%+1
echo %num%.%%i
)
echo %num%
pause>nul

结果发现这个该死FOR里面居然不能改变%num%的值,查了下 FOR /? 说是要用CMD /v启动命令行,然后把%num%改成!num!,我本来的目的是直接双击这一个批处理就完成操作的,看来不能用批处理实现了,去除这个部分,结果就有些不完美了,转向研究VBS中,看看VBS脚本能不能比较完美地实现我想要完成的功能,没找到好点的脚本对象手册,MSDN网上查又太慢,比较郁闷的

Update(2010-06-01): 原来通过设置延迟环境变量扩展,把%num%改为!num!后可实现:

@echo off & setlocal enabledelayedexpansion
SET num=0
FOR /D %%i IN (*) DO (
SET /a num=!num!+1
echo !num!.%%i
)
echo %num%
pause>nul

参见:

  1. http://www.java3z.com/cwbwebhome/article/article9/973.html