批处理的for问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 18:20:23
@echo off
for /d %%i in (dir /aa /b) do @echo %%i
pause
我的本意是打印当前目录下的文件名的,
结果打印
dir
/aa
/b
了,本人刚学批处理,小菜鸟,请牛牛们解答下,谢谢!

你后面的(dir /aa /b)是命令,应该用for /f
for /d是枚举目录的,
for /r是枚举文件,包括子文件夹。
for /l是算法递归的,

你在cmd下输入for/?回车,仔细查看下帮助吧..~!

FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,则指定与目录名匹配,而不与文件
名匹配。
FOR /R [[drive:]path] %variable IN (set) DO command [command-
检查以 [drive:]path 为根的目录树,指向每个目录中的
FOR 语句。如果在 /R 后没有指定目录,则使用当前
目录。如果集仅为一个单点(.)字符,则枚举该目录树。
FOR /L %variable IN (start,step,end) DO command [command-para
该集表示以增量形式从开始到结束的一个数字序列。

你的参数写错了,应该是 "for /f"或是"for /r"!

很多小错误,请注意改正:
@echo off
for /f "tokens=*" %%i in ('dir/aa/b') do echo %%i
pause