我有大约3000个txt文件,我想根据特定的短语将每个文件分成两个单独的txt文件,例如第一节和第二节。
每个文件都是这样的:
第一节
XXXXXXXXX XXXXXXXXXX XXXXXXXXX
第二节
Xxxxxxxxxc Xxxxccxccc Xxxxxxxcxx
我希望将第一部分和第二部分放在两个单独的txt文件中。
请建议或建议我执行此任务的任何帮助。我听说过批处理文件,但我不知道它是如何工作的。
我正在使用Windows 10.
非常感谢提前。
答案 0 :(得分:0)
我同意之前的评论。如果您想知道发生了什么,您应该自己努力阅读此处使用的命令的帮助(即for /?
,findstr /?
,...)。
尽管如此,试一试。它可能需要修改涉及处理paths
或任何您真正的任务。尝试自己的努力然后回来展示你的进展,你在哪里被困,并且可能找到解决方案。
此脚本将txt文件拆分为section two
,并将扩展名从blabla.txt
更改为blabla.one.txt
和blabla.two.txt
,其中每个文件都包含原始文件的拆分版本。< / p>
字符串Section ...
应该位于该行的开头。
@echo off
for /F %%f in ('dir /B *.txt') do (
for /F "usebackq tokens=1-3 delims=: " %%1 in (`findstr /B /N "Section" "%%f"`) do (
if /I "%%3" EQU "two" call :split %%f, %%1
)
)
exit/B
:split
Setlocal
set "fileone=%~1" & set "filetwo=%~1" & set/a split=%2
set "fileone=%fileone:.=.one.%"
set "filetwo=%filetwo:.=.two.%"
copy NUL "%fileone%">NUL
copy NUL "%filetwo%">NUL
for /F "tokens=1,* delims=[]" %%a in ('"type "%~1"|find /N /V """') do (
if %%a lss %split% (
echo(%%b>>"%fileone%"
) else (
echo(%%b>>"%filetwo%"
)
)
Endlocal
exit/B
答案 1 :(得分:0)
编辑我的批处理工作是为了获取所有文件并绕过递归已经拆分文件
@Echo off
For /f "Delims=" %%F in ('Dir /B/S File*.txt^|Findstr /v "_"'
) Do Set "Fout=NUL"&Set "Fin=%%~F"&For /f "Tokens=1*Delims=:" %%A in (
'Findstr /N /V §³$ %%F') Do Call:Sub %%B
Goto :Eof
:Sub
If %1. Equ Section. Call :SetFout %Fin% %2
>>"%Fout%" Echo:%*
Goto :Eof
:SetFout
Set "Fout=%~dpn1_%2%~x1"
Type NUL>"%Fout%"
一些解释
Section
Sub:调用SetFout从Fin(在文件中)中建立一个新名称Fout,方法是将_secondWord附加到它(一,二)新文件设置为NUL