中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 提取每行尾数固定字符后的内容
作者:
标题: 提取每行尾数固定字符后的内容 上一主题 | 下一主题
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『楼 主』:  提取每行尾数固定字符后的内容

有文本1.txt,内容如下:
c:\WINDOWS\Driver Cache\i386\ntkrnlmp.exe
c:\WINDOWS\Driver Cache\i386\ntkrnlpa.exe
c:\WINDOWS\Driver Cache\i386\ntkrpamp.exe
c:\WINDOWS\Driver Cache\i386\ntoskrnl.exe
c:\WINDOWS\ime\IMJP8_1\cplexe.exe
c:\WINDOWS\Installer\{5582719E-BB29-477B-BDD4-B494A746CE7D}\DWARPPRODUCTICON.exe
c:\WINDOWS\Installer\{F312B2F8-A700-46D2-A2DD-BB758313EA2F}\EMARPPRODUCTICON.exe
c:\WINDOWS\Installer\{F9A07F18-DAA5-499C-B721-8C9D9F59707A}\System\Folder_msiexec.exe

怎么把每行最后一个\后的内容提取出来,在文本2.txt:
ntkrnlmp.exe
ntkrnlpa.exe
ntkrpamp.exe
ntoskrnl.exe
cplexe.exe
DWARPPRODUCTICON.exe
EMARPPRODUCTICON.exe
Folder_msiexec.exe
其实关键,我是想把每行最后一个\后的内容作为变量使用,不知道怎么做?把它作为变量真的不知道批处理怎么写?

[ Last edited by xeibobin on 2008-5-21 at 08:23 PM ]

2008-5-21 20:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 2 楼』:  

好象有点难度,以前尝试过有批处理来做对一场CS比赛的前6名排名的统计,好象也是因为类似这样的问题没有去做,可能做了也很慢,数据太大

2008-5-21 20:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 3 楼』:  

如果后面都是文件名可用第一种方法,若后面的是不确定内容可用第二种方法。
:
@echo off
for /f "delims=" %%a in (a.txt) do echo %%~nxa
pause

@echo off
for /f "delims=" %%a in (a.txt) do call :loop "%%a"
pause
:loop
for /f "tokens=1* delims=\" %%i in ("%~1") do (
  if "%%j"=="" (echo %%i) else call :loop "%%j"
)
goto :eof


   此帖被 +8 点积分            点击查看详情   
评分人:【 moniuming 分数: +4  时间:2008-5-22 10:08
评分人:【 xeibobin 分数: +2  时间:2008-5-22 10:36
评分人:【 pooronce 分数: +2  时间:2008-5-22 11:01




致精致简!
2008-5-21 20:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 4 楼』:  

第二种方法真巧

2008-5-22 10:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 5 楼』:  

试了太好用了,其实我是发现C盘有MD5不对的EXE就拷贝服务器的原始EXE文件替换,现在终于可以了,感谢26933062,很多次都是你帮的忙,学习了

2008-5-22 10:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zqz0012005
中级用户




积分 297
发帖 135
注册 2006-10-21
状态 离线
『第 6 楼』:  

小楼到底是小楼,写出来的就是不一样

虽无影响,不过还是建议在pause后加上&goto :eof

第一种方法,即使后面是目录名,XP上也能正常使用(2000没试过)



hh.exe ntcmds.chm::/ntcmds.htm
2008-5-22 11:10
查看资料  发短消息 网志  OICQ (411976538)  编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 7 楼』:  

谢谢了

2008-5-22 12:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
FQ
社区乞丐





积分 -61
发帖 37
注册 2008-4-19
状态 离线
『第 8 楼』:  

我也顺便提供一种方法吧
@echo off&setlocal
for /f "tokens=*" %%a in (1.txt) do call:fq "%%a"
goto:eof
:fq
set n=%1
for %%x in (%n:\=" "%) do set "b=%%~x"
echo %b%


2008-5-22 16:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xeibobin
初级用户





积分 87
发帖 48
注册 2006-11-6
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by FQ at 2008-5-22 04:50 PM:
我也顺便提供一种方法吧
[code]
@echo off&setlocal
for /f "tokens=*" %%a in (1.txt) do call:fq "%%a"
goto:eof
:fq
set n=%1
for %%x in (%n:\=" "%) d ...

收下了,谢了

2008-5-23 12:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: