楼 主
[求助] 关于for的问题?
发表于 2007-09-30 13:43 · 中国 江西 南昌 电信
中级用户
★★
积分 245
发帖 123
注册 2007-06-08 09:04
19年会员
UID 90636
性别 女
状态 离线
我写的一个代码 是批量转换格式的
假设我要的东西都在当前目录
for /f %%i in ('dir /b *.txt') do ren "%%i" "%%~ni.html"
但当文件为 :WINDOWS XP的几个小技巧.txt 或 ADSL拨号中出现的错误代码 .txt这类文件时,就报错,说系统找不到指定的文件
但我把代码改成 for %%i in (*.txt) do ren "%%i" "%%~ni.html"
一切都能正常运行
我不知道这是为什么? 请各位大哥帮我解答一下 谢谢了!(我只是想知道什么原因)
第 2 楼
发表于 2007-09-30 16:33 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
因为文件名中含有空格,而for /f命令如果没有选项设置,默认是取以空格或者制表符(TAB)分割的第一个字段,所以"%%i" 就相当于"WINDOWS" 了,而不是你想要的“WINDOWS XP的几个小技巧.txt”。
要用 for /f 来完成的话,可以加上“tokens=*”这个选项,意思是取一行的所有字段。
for /f "tokens=*" %%i in ('dir /b *.txt') do ...
第 3 楼
发表于 2007-09-30 19:58 · 中国 江西 南昌 电信
中级用户
★★
积分 245
发帖 123
注册 2007-06-08 09:04
19年会员
UID 90636
性别 女
状态 离线
论坛跳转: