中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 07:11
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 文本处理 大家帮一下忙
可打印版本  1,131 / 5
第1楼 buypro 发表于 2010-10-02 23:47
新手上路 发帖 15 积分 15
文本处理 大家帮一下忙
我有个文本 是这样的格式



-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows :: Version XP010
-------------------------------------------------------------------------------

Started : Sat Oct 02 22:47:20 2010

Source = R:\lftp\
Dest = R:\-10-02\

Files : *.*

Options : *.* /FP /NS /NDL /L /S /E /COPY:DAT /PURGE /MIR /NP /R:1000000 /W:30

------------------------------------------------------------------------------

Newer R:\lftp\lftp-install.txt
New File R:\lftp\lftp-install.txt.bak

------------------------------------------------------------------------------

Total Copied Skipped Mismatch FAILED Extras
Dirs : 2 0 2 0 0 0
Files : 11 2 9 0 0 0
Bytes : 1.81 m 5.4 k 1.81 m 0 0 0
Times : 0:00:00 0:00:00 0:00:00 0:00:00

Ended : Sat Oct 02 22:47:20 2010



我感兴趣的是 就是文件名和路径
------------------------------------------------------------------------------

Newer R:\lftp\lftp-install.txt
New File R:\lftp\lftp-install.txt.bak

------------------------------------------------------------------------------

怎么才能提取出来文件名和路径并显示出来???或写入另一个文件?


我用了下面代码 但是总也无法成功。到底该怎么做???
for /f "tokens=1,2 delims=New " %%a in ( R:\log.txt ^| find "New" ) do (

echo 显示文件名 R:\lftp\lftp-install.txt

)


也就是结果要显示为
R:\lftp\lftp-install.txt
R:\lftp\lftp-install.txt.bak


先谢谢大家了

[ Last edited by buypro on 2010-10-2 at 23:49 ]
第2楼 726842270 发表于 2010-10-03 03:25
初级用户 发帖 43 积分 65 来自 吉林省长春市
不知道是不是这样
@echo off
for /f "tokens=2 delims=R" %%i in ('findstr /i "New" log.txt') do echo R%%i >>a.txt
pause
第3楼 buypro 发表于 2010-10-03 06:53
新手上路 发帖 15 积分 15
感谢枫中残雪的帮助
但是我发现个小问题 以 delims=R: 作为分隔符的话 如果文件或者路径里含有R 那将得不到想要的结果了。

比如下面例子 有多层目录结构 含有多个字母"R"

------------------------------------------------------------------------------

Newer R:\lftp\lftp-install.txt
New File R:\xRRftp\lRRft\lRRft\lftp-install.RRtxt.bak

------------------------------------------------------------------------------



@echo off
for /f "tokens=2 delims=R:" %%i in ('findstr /i "New" log.txt') do echo R:%%i >>a.txt




得出结果将是


R:\lftp\lftp-install.txt
R:\x





为什么 xRRftp\lRRft\lRRft\lftp-install.RRtxt.bak 过滤后成了 "X"
因怎么改?

[ Last edited by buypro on 2010-10-3 at 07:38 ]
第4楼 726842270 发表于 2010-10-03 09:43
初级用户 发帖 43 积分 65 来自 吉林省长春市
不好意思。没想那么多,改了一下,这回再试试
@echo off
for /f "tokens=2* delims=R" %%i in ('findstr /i "New"

log.txt') do echo R%%i%%j >>a.txt
pause
第5楼 buypro 发表于 2010-10-04 09:26
新手上路 发帖 15 积分 15
Originally posted by 726842270 at 2010-10-3 09:43:
不好意思。没想那么多,改了一下,这回再试试
@echo off
for /f "tokens=2* delims=R" %%i in ('findstr /i "New"

log.txt') do echo R%%i%%j >>a.txt
pause




谢谢 枫中残雪


真是太好了。


tokens=2* 那个星号代表通配符吗????



我另开一帖 关于增量备份 希望大家能来看看 谈谈想法。http://www.cn-dos.net/forum/viewthread.php?tid=52589&sid=99WNkE

常见增量备份工具很多。。但是一般都是增量备份而已。 对老文件一般都是覆盖而无法做到改名。

我的做法是 源文件改了。 备份文件中的老文件被按规律改名保存 然后再 在生成一个和源文件一样的备份文件。 这样可以无限制生成很多个 改名备份文件。 你可以利用这些改名备份文件恢复到任意次备份前的状态 这对经常需要编辑修改文件的人很有用。 相信明白的人自然明白。(可能我拙于表达 )

[ Last edited by buypro on 2010-10-4 at 09:47 ]
第6楼 buypro 发表于 2010-10-04 14:26
新手上路 发帖 15 积分 15
case closed

[ Last edited by buypro on 2010-10-4 at 23:03 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023