标题: 提取每行尾数固定字符后的内容
[打印本页]
作者: xeibobin
时间: 2008-5-21 20:22
标题: 提取每行尾数固定字符后的内容
有文本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 ]
作者: xeibobin
时间: 2008-5-21 20:28
好象有点难度,以前尝试过有批处理来做对一场CS比赛的前6名排名的统计,好象也是因为类似这样的问题没有去做,可能做了也很慢,数据太大
作者: 26933062
时间: 2008-5-21 20:34
如果后面都是文件名可用第一种方法,若后面的是不确定内容可用第二种方法。
:
@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
作者: moniuming
时间: 2008-5-22 10:09
第二种方法真巧
作者: xeibobin
时间: 2008-5-22 10:52
试了太好用了,其实我是发现C盘有MD5不对的EXE就拷贝服务器的原始EXE文件替换,现在终于可以了,感谢26933062,很多次都是你帮的忙,学习了
作者: zqz0012005
时间: 2008-5-22 11:10
小楼到底是小楼,写出来的就是不一样
虽无影响,不过还是建议在pause后加上&goto :eof
第一种方法,即使后面是目录名,XP上也能正常使用(2000没试过)
作者: xeibobin
时间: 2008-5-22 12:21
谢谢了
作者: FQ
时间: 2008-5-22 16:50
我也顺便提供一种方法吧
@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%
作者: xeibobin
时间: 2008-5-23 12:08
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 ... |
|
收下了,谢了