![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 16:34 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教:For命令 完整路径错误 |
| 可打印版本 608 / 11 |
| 第1楼 eeeee11111 | 发表于 2008-03-03 22:52 |
| 新手上路 发帖 5 积分 12 | |
|
请教:For命令 完整路径错误 bat脚本如下:
::-------------------------------------------------------------------------------------------------- set file_name=D:\BAT\DB_BAK\05日志文件\20080303.log for /f "usebackq tokens=1* delims=:" %%i in (`findstr /n .* %file_name%`) do ( echo %%i echo %%j ) ::-------------------------------------------------------------------------------------------------- 错误提示: FINDSTR: 无法打开 D:\BAT\DB_BAK\05日志文件\20080303 单独使用 findstr /n .* D:\BAT\DB_BAK\05日志文件\20080303.log 没有问题 是否是for语句中的“\”符号表示正则转义字符的缘故? 应该如何修改,请大家指点? |
|
| 第2楼 eeeee11111 | 发表于 2008-03-03 23:06 |
| 新手上路 发帖 5 积分 12 | |
|
没有人来,自己顶! Help!
|
|
| 第3楼 fastslz | 发表于 2008-03-03 23:17 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%file_name%"') ......
|
|
| 第4楼 26933062 | 发表于 2008-03-03 23:18 |
| 银牌会员 发帖 879 积分 2,268 | |
|
用了usebackq就应该用后引号`而不是单引号'
|
|
| 第5楼 eeeee11111 | 发表于 2008-03-03 23:25 |
| 新手上路 发帖 5 积分 12 | |
Originally posted by fastslz at 2008-3-3 11:17 PM: 多谢回复,不过测试还是不行哦,还是报同样的错误哦! |
|
| 第6楼 lxmxn | 发表于 2008-03-04 00:57 |
| 版主 发帖 4,938 积分 11,386 | |
|
代码没什么错误,关键是看楼主是否细心了。
|
|
| 第7楼 eeeee11111 | 发表于 2008-03-04 09:41 |
| 新手上路 发帖 5 积分 12 | |
|
我又测试了几次,
我的代码在win 2000 的系统上运行就会报错,在win XP的系统上运行没有问题。 fastslz大侠的代码在win 2000 的系统上运行也会报错,在win XP的系统上运行也没有问题。把"%file_name%"的""符号去掉,win 2000 的系统上运行仍报错,在win XP的系统上运行没有问题。 难道是2000与XP系统的区别吗?如何解决适应两个系统的写法,哪位大侠能告知? |
|
| 第8楼 zh159 | 发表于 2008-03-04 10:34 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
2000与XP系统语法不完全相同,解决适应两个系统的写法是先判断是哪个系统,再跳转到适合该系统运行脚本的标签项
|
|
| 第9楼 fastslz | 发表于 2008-03-04 10:51 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
Originally posted by eeeee11111 at 2008-3-4 09:41: 为什么要去掉呢? N年前我的计算机中级老师说过这样一句话,不管是短文件名或长文件名用“”括起来总没错的,除非你用8.3短名。我多年的经验告诉我,养成这个良好习惯非常非常重要,它决定了你的代码稳定性! findstr标准语法 findstr "strings" "X:\XXX\XXX.XXX" |
|
| 第10楼 suntb | 发表于 2008-03-04 14:28 |
| 高级用户 发帖 277 积分 581 | |
Originally posted by fastslz at 2008-3-4 10:51: 应该是这样 反正用“”括起来总没错 |
|
| 第11楼 eeeee11111 | 发表于 2008-03-04 19:02 |
| 新手上路 发帖 5 积分 12 | |
Originally posted by fastslz at 2008-3-4 10:51 AM: 多谢指点,下次不会出现类似错误。 但在2000下,是否只能先设置当前目录,再做仅文件名的findstr ?? |
|
| 第12楼 sylovanas | 发表于 2008-03-05 19:16 |
| 初级用户 发帖 42 积分 107 | |
|
这样呢?
@echo off ::-------------------------------------------------------------------------------------------------- set file_name=^"D:\BAT\DB_BAK\05日志文件\20080303.log^" for /f "usebackq tokens=1* delims=:" %%i in (`findstr /n .* %file_name%`) do ( echo %%i echo %%j ) ::-------------------------------------------------------------------------------------------------- |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |