批处理提取字符串
有个文件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
即:保留 -数字 之前的部分,不包含-数字的,保留原来名称
求高手指点! 展开
abc-1.0.0.jar
a.jar
cba-ca-2.0.1.jar
bbb-2.01.ca.jar
想通过一个批处理,输出下面的结果:
abc
a.jar
cba-ca
bbb
即:保留 -数字 之前的部分,不包含-数字的,保留原来名称
求高手指点! 展开
2个回答
展开全部
@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
追答
呵呵 我可是按开始所描述的"规则"写的... 一会帮你重写一个,再考虑下这个"规则"有无再补充的
展开全部
保存为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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询