中国DOS联盟论坛

中国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:
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%file_name%"') ......



多谢回复,不过测试还是不行哦,还是报同样的错误哦!
第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:
把"%file_name%"的""符号去掉

为什么要去掉呢?
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:

为什么要去掉呢?
N年前我的计算机中级老师说过这样一句话,不管是短文件名或长文件名用“”括起来总没错的,除非你用8.3短名。我多年的经验 ...



应该是这样

反正用“”括起来总没错
第11楼 eeeee11111 发表于 2008-03-04 19:02
新手上路 发帖 5 积分 12
Originally posted by fastslz at 2008-3-4 10:51 AM:

为什么要去掉呢?
N年前我的计算机中级老师说过这样一句话,不管是短文件名或长文件名用“”括起来总没错的,除非你用8.3短名。我多年的经验 ...


多谢指点,下次不会出现类似错误。

但在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