|
zihongdelei
初级用户
积分 32
发帖 13
注册 2007-9-14
状态 离线
|
『楼 主』:
VISTA中FOR语句问题,大家来帮帮忙~
for /f "tokens=1,2,3,* delims=- " %%i in ('date /t') do set A=%%i&set B=%%j&set C=%%k&set D=%%l这句在XP中好用,在VISTA中不能用,即使以管理员运行也不能。貌似
for in ('')参数形式都不能运行?说'date /t'不是内部命令也不是外部命令。
请高手解释下?
纳闷的还有,VISTA中FOR说明中的例句:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
也不能运行,说'set'不是内部命令也不是外部命令。
[ Last edited by zihongdelei on 2008-2-21 at 06:08 PM ]
|
|
2008-2-21 17:21 |
|
|
pooronce
中级用户
积分 484
发帖 250
注册 2007-6-5
状态 离线
|
『第
2 楼』:
date /t ← 这里没空格?
直接在命令行下面打命令?是的话%%i等替换成%i,单个,两个是用于批处理里面的
另外可以试着加usebackq 然后用`括住命令
|
|
2008-2-21 17:48 |
|
|
zihongdelei
初级用户
积分 32
发帖 13
注册 2007-9-14
状态 离线
|
『第
3 楼』:
哦!date /t原本有空格,不能运行,后来去掉还是不能。我说怎么有时候提示不应有%%i呢!学到啦~还有usebackq是怎么用?问题未解决呢……
|
|
2008-2-21 17:52 |
|
|
zihongdelei
初级用户
积分 32
发帖 13
注册 2007-9-14
状态 离线
|
『第
4 楼』:
usebackq用了后FOR将 date /t 当作字符串分解了。我想让它当命令执行,然后分解执行结果。
|
|
2008-2-21 17:56 |
|
|
pooronce
中级用户
积分 484
发帖 250
注册 2007-6-5
状态 离线
|
『第
5 楼』:
加usebackq后,命令就用`(~键)括起来的
只是让你试一下的,这里可以不用usebackq的,用它是在某些命令中含有单撇号的情况下
|
|
2008-2-21 18:37 |
|
|
zihongdelei
初级用户
积分 32
发帖 13
注册 2007-9-14
状态 离线
|
『第
6 楼』:
FOR /F "usebackq tokens=1,* delims=:" %%i IN (`time /T`) DO set E=%%i&set F=%%j
运行结果一样,不是内部命令也不是外部命令。另外在FOR语句讲解帖子中多次提到的分解时间。就是我问的这个,一样不可以在VISTA中运行……
|
|
2008-2-21 18:44 |
|
|
everest79
金牌会员
一叶枝头,万树皆春
积分 2564
发帖 1127
注册 2006-12-25
状态 离线
|
『第
7 楼』:
for /f %i in ('date /t') do echo %i
显示2008/2/21
for /f %i in ('set') do echo %i
枚兴所有变量
确保你cmd是以管理员身份启动的
|
|
2008-2-21 20:25 |
|
|
qdloverr
初级用户
积分 97
发帖 33
注册 2007-3-5
状态 离线
|
『第
8 楼』:
例一:
@echo off
for /f "usebackq" %%i in (set) do (
echo %%i
)
pause
解说:这里的set依然表示文件set。
例二:
@echo off
for /f "usebackq" %%i in ('set') do (
echo %%i
)
pause
解说:这里的'set'表示字符串set。
例三:
@echo off
for /f "usebackq" %%i in (`set`) do (
echo %%i
)
pause
解说:这里的`set`表示命令set,注意这里用到的符号是后引号(键盘上数字1左面的那个键)。
例四:
@echo off
for /f "usebackq" %%i in ("set") do (
echo %%i
)
pause
解说:这里的"set"依然表示文件set。
总结一下:如果用到了usebackq参数,则(set)和("set")表示文件set,('set')表示字符串set,(`set`)表示命令set。
请注意区分。
有人会问,这个参数究竟有什么作用?
答:当你要解析的文件的路径中带有空格,比如你要解析的文件路径为C:\Documents and Settings\Administrator\桌面\hero.txt。
如果不用usebackq参数,你将得不到正确的结果。
如果你这样写的话
@echo off
for /f %%i in ("C:\Documents and Settings\Administrator\桌面\hero.txt") do (
echo %%i
)
pause
结果只是解析了一个字符串而不是文件。
如果你这样写的话
@echo off
for /f %%i in (C:\Documents and Settings\Administrator\桌面\hero.txt) do (
echo %%i
)
pause
结果会提示找不到C:\Documents。
而如果这样写
@echo off
for /f "usebackq" %%i in ("C:\Documents and Settings\Administrator\桌面\hero.txt") do (
echo %%i
)
pause
你就可以得到正确的结果。
|
|
2008-2-22 10:37 |
|