|
eeeee11111
新手上路
积分 12
发帖 5
注册 2008-3-1
状态 离线
|
『楼 主』:
请教: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语句中的“\”符号表示正则转义字符的缘故?
应该如何修改,请大家指点?
|
|
2008-3-3 22:52 |
|
|
eeeee11111
新手上路
积分 12
发帖 5
注册 2008-3-1
状态 离线
|
|
2008-3-3 23:06 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
3 楼』:
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%file_name%"') ......
|
第一高手 第二高手
我的小站
|
|
2008-3-3 23:17 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
4 楼』:
用了usebackq就应该用后引号`而不是单引号'
|
致精致简! |
|
2008-3-3 23:18 |
|
|
eeeee11111
新手上路
积分 12
发帖 5
注册 2008-3-1
状态 离线
|
『第
5 楼』:
Quote: | Originally posted by fastslz at 2008-3-3 11:17 PM:
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%file_name%"') ...... |
|
多谢回复,不过测试还是不行哦,还是报同样的错误哦!
|
|
2008-3-3 23:25 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
6 楼』:
代码没什么错误,关键是看楼主是否细心了。
|
|
2008-3-4 00:57 |
|
|
eeeee11111
新手上路
积分 12
发帖 5
注册 2008-3-1
状态 离线
|
『第
7 楼』:
我又测试了几次,
我的代码在win 2000 的系统上运行就会报错,在win XP的系统上运行没有问题。
fastslz大侠的代码在win 2000 的系统上运行也会报错,在win XP的系统上运行也没有问题。把"%file_name%"的""符号去掉,win 2000 的系统上运行仍报错,在win XP的系统上运行没有问题。
难道是2000与XP系统的区别吗?如何解决适应两个系统的写法,哪位大侠能告知?
|
|
2008-3-4 09:41 |
|
|
zh159
金牌会员
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
『第
8 楼』:
2000与XP系统语法不完全相同,解决适应两个系统的写法是先判断是哪个系统,再跳转到适合该系统运行脚本的标签项
|
|
|
2008-3-4 10:34 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
9 楼』:
Quote: | Originally posted by eeeee11111 at 2008-3-4 09:41:
把"%file_name%"的""符号去掉 |
|
为什么要去掉呢?
N年前我的计算机中级老师说过这样一句话,不管是短文件名或长文件名用“”括起来总没错的,除非你用8.3短名。我多年的经验告诉我,养成这个良好习惯非常非常重要,它决定了你的代码稳定性!
findstr标准语法
findstr "strings" "X:\XXX\XXX.XXX"
|
第一高手 第二高手
我的小站
|
|
2008-3-4 10:51 |
|
|
suntb
高级用户
积分 581
发帖 277
注册 2006-12-23
状态 离线
|
『第
10 楼』:
Quote: | Originally posted by fastslz at 2008-3-4 10:51:
为什么要去掉呢?
N年前我的计算机中级老师说过这样一句话,不管是短文件名或长文件名用“”括起来总没错的,除非你用8.3短名。我多年的经验 ... |
|
应该是这样
反正用“”括起来总没错
|
|
2008-3-4 14:28 |
|
|
eeeee11111
新手上路
积分 12
发帖 5
注册 2008-3-1
状态 离线
|
『第
11 楼』:
Quote: | Originally posted by fastslz at 2008-3-4 10:51 AM:
为什么要去掉呢?
N年前我的计算机中级老师说过这样一句话,不管是短文件名或长文件名用“”括起来总没错的,除非你用8.3短名。我多年的经验 ... |
|
多谢指点,下次不会出现类似错误。
但在2000下,是否只能先设置当前目录,再做仅文件名的findstr ??
|
|
2008-3-4 19:02 |
|
|
sylovanas
初级用户
积分 107
发帖 42
注册 2007-9-3
状态 离线
|
『第
12 楼』:
这样呢?
@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
)
::--------------------------------------------------------------------------------------------------
|
|
2008-3-5 19:16 |
|