批处理提取字符串

有个文件a.txt,内容如下:abc-1.0.0.jara.jarcba-ca-2.0.1.jarbbb-2.01.ca.jar想通过一个批处理,输出下面的结果:abca... 有个文件a.txt,内容如下:
abc-1.0.0.jar
a.jar
cba-ca-2.0.1.jar
bbb-2.01.ca.jar

想通过一个批处理,输出下面的结果:
abc
a.jar
cba-ca
bbb
即:保留 -数字 之前的部分,不包含-数字的,保留原来名称
求高手指点!
展开
 我来答
yyykkkyyyy
推荐于2016-09-10 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3326万
展开全部
@echo off
for /f "delims=:" %%i in ('findstr/bn "[^0-9][^0-9]*\-[0-9]" "a.txt"')do set #%%i=y
(for /f "tokens=1* delims=:" %%i in ('findstr/n .* "a.txt"')do (
    if defined #%%i (
        set "h=%%j"
        setlocal enabledelayedexpansion
        for /f "delims=0123456789" %%k in ("!h!")do set "s=%%k"
        set "h=!s:~,-1!"
        echo;!h!
        endlocal)else echo;%%j
))>b.txt
pause
更多追问追答
追问
如果前面名称包含数字,例如:sdg4j-1.4.8.jar
这怎么处理?结果要求为sdg4j
追答
呵呵 我可是按开始所描述的"规则"写的... 一会帮你重写一个,再考虑下这个"规则"有无再补充的
蔡瑀
2014-03-27 · TA获得超过231个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:333万
展开全部

 保存为vbs类型文件

on error resume next 
dim fso,file,read,readlist,ReadIntercept,FilterString,string_finally,str_arr(),count,spath 
file="all.txt"        '需要处理的文本文件 
if instr(file,"\") then       '过滤路径 
spath=left(file,instr(file,"\")) 
else 
spath=empty 
end if 
set fso=createobject("scripting.filesystemobject") 
if fso.fileexists(file)=false then msgbox "文件不存在",64,wscript.scriptname:quit 
read=fso.opentextfile(file).readall     '读取全文 
ReadIntercept=split(read,vbcrlf)     '截取文本 
for each readlist in ReadIntercept     '处理字符串 
 redim preserve str_arr(count)     '重定义变量数组 
if instr(readlist,"-")>0 then
 FilterString=split(readlist,"-")    '过滤字符串 
 if isnumeric(left(mid(readlist,instrrev(readlist,"-")+1),1))=true then      '如果存在数字则保留数字之前的字符串,否则不作处理 
  str_arr(count)=left(readlist,instrrev(readlist,"-")-1)
end if
 else 
  str_arr(count)=readlist
 end if 
 count=count+1       '新增数组元素 
next 
string_finally=join(str_arr,vbcrlf)     '合并数组 
fso.createtextfile(spath&"new_"&file).write string_finally '生成新文件 
sub quit       '退出程序 
set fso=nothing  
wscript.quit 
end sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式