楼 主
请教:For命令 完整路径错误
发表于 2008-03-03 22:52 · 中国 广东 广州 电信
新手上路
★
积分 12 发帖 5 注册 2008-03-01 21:20 UID 111821 性别 男
状态 离线
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 楼
没有人来,自己顶!
发表于 2008-03-03 23:06 · 中国 广东 广州 电信
新手上路
★
积分 12 发帖 5 注册 2008-03-01 21:20 UID 111821 性别 男
状态 离线
第 3 楼
发表于 2008-03-03 23:17 · 中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493 发帖 2,315 注册 2006-05-01 10:41 UID 54766 性别 男 来自 上海
状态 离线
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%file_name%"') ......
第 4 楼
发表于 2008-03-03 23:18 · 中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268 发帖 879 注册 2006-12-19 16:23 UID 73968 性别 男
状态 离线
用了usebackq就应该用后引号`而不是单引号'
致精致简!
第 5 楼
发表于 2008-03-03 23:25 · 中国 广东 广州 电信
新手上路
★
积分 12 发帖 5 注册 2008-03-01 21:20 UID 111821 性别 男
状态 离线
Originally posted by fastslz at 2008-3-3 11:17 PM:
for /f "tokens=1* delims=:" %%i in ('findstr /n .* "%file_name%"') ......
多谢回复,不过测试还是不行哦,还是报同样的错误哦!
第 6 楼
发表于 2008-03-04 00:57 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 UID 59080
状态 离线
第 7 楼
发表于 2008-03-04 09:41 · 中国 广东 广州 天河区 电信
新手上路
★
积分 12 发帖 5 注册 2008-03-01 21:20 UID 111821 性别 男
状态 离线
我又测试了几次,
我的代码在win 2000 的系统上运行就会报错,在win XP的系统上运行没有问题。
fastslz大侠的代码在win 2000 的系统上运行也会报错,在win XP的系统上运行也没有问题。把"%file_name%"的""符号去掉,win 2000 的系统上运行仍报错,在win XP的系统上运行没有问题。
难道是2000与XP系统的区别吗?如何解决适应两个系统的写法,哪位大侠能告知?
第 8 楼
发表于 2008-03-04 10:34 · 中国 广西 玉林 电信
金牌会员
★★★★
积分 3,687 发帖 1,467 注册 2005-08-08 12:00 UID 44210
状态 离线
2000与XP系统语法不完全相同,解决适应两个系统的写法是先判断是哪个系统,再跳转到适合该系统运行脚本的标签项
第 9 楼
发表于 2008-03-04 10:51 · 中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493 发帖 2,315 注册 2006-05-01 10:41 UID 54766 性别 男 来自 上海
状态 离线
Originally posted by eeeee11111 at 2008-3-4 09:41:
把"%file_name%"的""符号去掉
为什么要去掉呢?
N年前我的计算机中级老师说过这样一句话,不管是短文件名或长文件名用“”括起来总没错的,除非你用8.3短名。我多年的经验告诉我,养成这个良好习惯非常非常重要,它决定了你的代码稳定性!
findstr标准语法
findstr "strings" "X:\XXX\XXX.XXX"
第 10 楼
发表于 2008-03-04 14:28 · 中国 福建 福州 联通
高级用户
★★
积分 581 发帖 277 注册 2006-12-23 05:10 UID 74328 性别 男
状态 离线
Originally posted by fastslz at 2008-3-4 10:51:
为什么要去掉呢?
N年前我的计算机中级老师说过这样一句话,不管是短文件名或长文件名用“”括起来总没错的,除非你用8.3短名。我多年的经验 ...
应该是这样
反正用“”括起来总没错
第 11 楼
发表于 2008-03-04 19:02 · 中国 广东 广州 天河区 电信
新手上路
★
积分 12 发帖 5 注册 2008-03-01 21:20 UID 111821 性别 男
状态 离线
Originally posted by fastslz at 2008-3-4 10:51 AM:
为什么要去掉呢?
N年前我的计算机中级老师说过这样一句话,不管是短文件名或长文件名用“”括起来总没错的,除非你用8.3短名。我多年的经验 ...
多谢指点,下次不会出现类似错误。
但在2000下,是否只能先设置当前目录,再做仅文件名的findstr ??
第 12 楼
发表于 2008-03-05 19:16 · 中国 台湾 台北市 远传电信
初级用户
★
积分 107 发帖 42 注册 2007-09-03 16:43 UID 96475 性别 男
状态 离线
这样呢?
@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学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正