![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 13:34 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » VISTA中FOR语句问题,大家来帮帮忙~ |
| 可打印版本 637 / 7 |
| 第1楼 zihongdelei | 发表于 2008-02-21 17:21 |
| 初级用户 发帖 13 积分 32 | |
|
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 ] |
|
| 第2楼 pooronce | 发表于 2008-02-21 17:48 |
| 中级用户 发帖 250 积分 484 | |
|
date /t ← 这里没空格?
直接在命令行下面打命令?是的话%%i等替换成%i,单个,两个是用于批处理里面的 另外可以试着加usebackq 然后用`括住命令 |
|
| 第3楼 zihongdelei | 发表于 2008-02-21 17:52 |
| 初级用户 发帖 13 积分 32 | |
|
哦!date /t原本有空格,不能运行,后来去掉还是不能。我说怎么有时候提示不应有%%i呢!学到啦~还有usebackq是怎么用?问题未解决呢……
|
|
| 第4楼 zihongdelei | 发表于 2008-02-21 17:56 |
| 初级用户 发帖 13 积分 32 | |
|
usebackq用了后FOR将 date /t 当作字符串分解了。我想让它当命令执行,然后分解执行结果。
|
|
| 第5楼 pooronce | 发表于 2008-02-21 18:37 |
| 中级用户 发帖 250 积分 484 | |
|
加usebackq后,命令就用`(~键)括起来的
只是让你试一下的,这里可以不用usebackq的,用它是在某些命令中含有单撇号的情况下 |
|
| 第6楼 zihongdelei | 发表于 2008-02-21 18:44 |
| 初级用户 发帖 13 积分 32 | |
|
FOR /F "usebackq tokens=1,* delims=:" %%i IN (`time /T`) DO set E=%%i&set F=%%j
运行结果一样,不是内部命令也不是外部命令。另外在FOR语句讲解帖子中多次提到的分解时间。就是我问的这个,一样不可以在VISTA中运行…… |
|
| 第7楼 everest79 | 发表于 2008-02-21 20:25 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
for /f %i in ('date /t') do echo %i
显示2008/2/21 for /f %i in ('set') do echo %i 枚兴所有变量 确保你cmd是以管理员身份启动的 |
|
| 第8楼 qdloverr | 发表于 2008-02-22 10:37 |
| 初级用户 发帖 33 积分 97 | |
|
例一:
@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 你就可以得到正确的结果。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |