把以下内告并容复制到记事本之后另存为aa.vbs(保存类型—所有文件),之后把这个aa.vbs文件复制到和你要分割的文本文件的同一目录,双击运行即可(如果文件过多或过大,速度会很慢,请测试后使用)
set ws=createobject("wscript.shell")
set fso=createobject("scripting.filesystemobject")
set folder=fso.getfolder(ws.currentdirectory)
set files=folder.files
for each file in files
if right(file,3)="txt" then
call fenge(file)
end if
next
msgbox "文件分割完成!",48+4096,"系统提示"
sub fenge(a)
if not fso.FolderExists(folder &"\分咐宏割后的文件") then fso.createfolder(folder &"\分衡友册割后的文件")
jbm=fso.getbasename(a):i=0
set fl=fso.opentextfile(a,1)
do while fl.atendofstream<>true
n=fl.readline
if lenb(s)/1000<50 then
s=s &n &vbcrlf
else
set wenjian=fso.createtextfile(folder &"\分割后的文件\" &jbm &"(" &i &").txt")
wenjian.write s
wenjian.close
s=n:i=i+1
end if
loop
fl.close
end sub
处理后的每个文本中的内容都以图中黄框中的样式保逗穗渣存,保存的文件名以绿框中的内容命名,对吗?族肢
能否提供几个文本供我分析?因为我就怕编码或换行的问题,导致最终处理失败或出现山悄乱码问题。如果可以,请通过网盘分享给我。
不清楚你的实际文件/情况,仅以问题中的样例/说明为据复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行<# :
cls
@echo off
rem 将一个txt文本文件里的内容按照含有指定特征字符串的行及其下面的多行内容分割成改唯多个小的txt文件
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title 核茄培%#% +%$%%$%/%@% %z%
cd 纳基/d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default)))"
echo%#% +%$%%$%/%@% %z%
pause
exit
#>
$txtfile='.\yourfile.txt'
if(-not (test-path -liter $txtfile)){Write-host ('"'+$txtfile+'" not found')exit}
$enc=[Text.Encoding]::Default
$text=[IO.File]::ReadAllLines($txtfile, $enc)
$dic=New-Object 'System.Collections.Generic.Dictionary[string,Object]'
$newfile=''
for($i=0$i -lt $text.count$i++){
if($text[$i].Contains('>sp|')){
$newfile='.\'+$text[$i].split('|')[1]+'.txt'
if(($newfile -ne '') -and (-not $dic.ContainsKey($newfile))){
[System.Collections.ArrayList]$a=@()
$dic.add($newfile,$a)
}
}
if($dic.ContainsKey($newfile)){[void]$dic[$newfile].add($text[$i])}
}
foreach($k in $dic.Keys){
write-host $k
[IO.File]::WriteAllLines($k, $dic[$k], $enc)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)