![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-01 19:05 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,249 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » for 语句中获取当前路径? |
| 可打印版本 1,323 / 5 |
| 第1楼 qdcr | 发表于 2006-06-27 15:43 |
| 初级用户 发帖 32 积分 120 | |
|
for 语句中获取当前路径? 请教各位:
@echo off for /f "tokens=1,2 delims=*" %%i in (test.txt) do ( echo %%i*********%CD% set orig_dir=%CD% echo orig_dir--------------%orig_dir% ) pause test.txt的内容为: 1 2 3 输出结果为: 1*********E:\files orig_dir-------------- 2*********E:\files orig_dir-------------- 3*********E:\files orig_dir-------------- Press any key to continue . . . 问题:为什么在for()中定义的字符串获取不到当前路径,输出为空? |
|
| 第2楼 namejm | 发表于 2006-06-27 16:53 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
对于你这种情况,应该启用变量延迟。修正后的代码如下:
|
|
| 第3楼 不得不爱 | 发表于 2006-06-28 09:54 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
是"tokens=1,2 delims=*" 在作怪,删除掉就正常了!如下:
@echo off for /f %%i in (test.txt) do ( echo %%i*********%CD% set orig_dir=%CD% echo orig_dir--------------%orig_dir% ) pause |
|
| 第4楼 namejm | 发表于 2006-06-28 10:21 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
两种办法都得到了同样的结果,有点奇怪。
虽然用tokens=1,2 delimes=*有点莫名其妙,但是启用变量延迟之后就正常了,而qwe1234567删了那一句之后不用变量延迟也可以,看来得再向各位请教一下变量延迟的用法了。 |
|
| 第5楼 qdcr | 发表于 2006-06-28 12:47 |
| 初级用户 发帖 32 积分 120 | |
|
谢谢,这个 setlocal enabledelayedexpansion 是在任意一个版本的dos中都支持么?
或者 windows 98/2K/xp中的command中都支持么? |
|
| 第6楼 3742668 | 发表于 2006-06-28 13:18 |
| 荣誉版主 发帖 718 积分 2,013 | |
XP PRO SP2下测试失败。 如果不想起用延时的环境变量的话,建议用call :标号 参数 结构,而且可以让代码的可读性更好。 请自行测试,修改。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |