文本名称:STD
TXT内容如下:
:BIGEN
PN#空格1
A
B
C
D
:END
:BIGEN
PN#空格2
A
B
C
:END
:BIGEN
PN#空格3
A
B
:END
:BIGEN
PN#空格4
A
B
C
D
E
:END
#TXT文本按指定内容END所在行分割生成多个文本文件,以文本名称STD+PN#后面的1234分别重命名各文本名称。
PS:文本内容不一样长。
稍等我尝试一下,如果你是公司it,可以使用powershell ISE先行编辑,然后复制到txt里修改后缀为bat即可,我已经帮你测试过了
$filename = "C:\Users\Administrator\Desktop\STD.txt"
$outputpath = "C:\Users\Administrator\Desktop"
$delimiter = ":END"
$content = ""
$pn = ""
Get-Content -Path $filename | ForEach-Object {
$line = $_
if ($line -match $delimiter) {
if ($content) {
$content | Out-File -FilePath "$outputpath\STD+PN#$pn.txt"
$content = ""
}
} elseif ($line -match "PN#空格(\d+)") {
$pn = $matches[1]
} else {
$content += $line + "`r`n"
}
}
if ($content) {
$content | Out-File -FilePath "$outputpath\STD$pn.txt"
}
创建一个 split.js :
var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.OpenTextFile("STD.txt", 1);
var out = null;
while(!file.AtEndOfStream){
var line = file.ReadLine();
if(line == "BEGIN" || line == "BIGEN" ){ //BIGEN是为了兼容你这拼写错误
var name = file.ReadLine();
out = fso.OpenTextFile("STD " + name + ".txt", 2, true);
}else if(line == "END"){
out.Close();
}else{
out.WriteLine(line);
}
}
双击运行 split.js 即可
非要用批处理的话,创建一个split.bat
cscript split.js
运行这个split.bat
bat批处理提取文件名和MD5,重命名文件,校验签名,制作IDA的sig标签
可以参考下
设置输入文件的名称(STD.TXT)和输出文件的名称前缀(STD)。然后,它遍历输入文件的每一行。当它遇到一个以:END结束的行时,它就会提取PN#后面的数字和后面的内容,然后根据这个数字来重命名输出的文件。
@echo off
setlocal enabledelayedexpansion
set "inputFile=STD.TXT"
set "outputPrefix=STD"
for /f "tokens=1* delims=:" %%a in (%inputFile%) do (
if "%%a"==":END" (
set "prefix=%%b"
set "suffix=%%c"
set "counter=0"
for /f "tokens=1,2 delims= " %%d in ("!prefix!") do (
set /a "counter+=1"
type nul >"!outputPrefix!_%%d_!counter!.txt"
for %%e in (%%f) do (
echo %%e >>"!outputPrefix!_%%d_!counter!.txt"
)
)
)
)
echo All files have been split and renamed.
你可以使用批处理脚本来实现这个任务。以下是一个示例脚本,可以根据你提供的要求分割、提取和重命名文本文件:
@echo off
setlocal enabledelayedexpansion
set "filename=STD.txt"
set "output_prefix=STD"
REM 读取文本文件内容
for /f "delims=" %%a in (%filename%) do (
set "line=%%a"
REM 判断是否为分割行
if "!line:~0,4!"=="::END" (
REM 提取PN#后面的数字
set "pn=!line:~8!"
REM 创建新的输出文件
set "output_file=!output_prefix!!pn!.txt"
echo. > !output_file!
) else (
REM 将行内容追加到当前输出文件
echo !line! >> !output_file!
)
)
echo 完成分割和重命名文本文件。
pause
将上述脚本保存为一个批处理文件(例如split_rename.bat),然后将STD.txt文件与脚本放在同一目录下。运行脚本后,将生成四个新的文本文件,分别命名为STD1.txt、STD2.txt、STD3.txt和STD4.txt,内容分别对应原始文本中的四个部分。
请注意,脚本假设STD.txt文件位于与脚本相同的目录中,并且输出文件的名称是根据PN#后面的数字进行重命名的。如果你的实际需求有所不同,你可以根据需要进行修改。
@echo off
setlocal enabledelayedexpansion
set "filename=STD.txt"
set "output_prefix=STD"
REM 删除旧的输出文件
del /q %output_prefix%*
REM 逐行读取文本文件
for /f "tokens=*" %%a in (%filename%) do (
REM 提取行内容
set "line=%%a"
REM 判断是否为需要分割的行
echo !line! | find ":BIGEN" >nul
if !errorlevel! equ 0 (
REM 获取PN#后面的标识符
set "prefix=!line:*PN#=!"
set "prefix=!prefix: =!"
echo !line! | find ":END" >nul
if !errorlevel! equ 0 (
REM 结束分割,重置标识符
set "prefix="
)
)
REM 写入到对应的输出文件
if not "!prefix!" == "" (
echo !line!>>%output_prefix%!prefix!.txt
)
)
批处理是Windows系统中的一个命令行语言,可以用来执行一些批处理脚本。批处理脚本是一系列命令或一些操作的集合,可以执行一系列的任务。在批处理脚本中,用户可以使用一些命令来进行文本的分割、提取和重命名等操作。本文主要介绍在批处理中如何进行文本分割、提取和重命名。
文本分割
要对文本进行分割,可以使用字符串分割命令set和for。使用set命令,可以将文本中的每一行内容分割成多个子字符串,并将每个子字符串赋值给不同的变量。例如,可以使用以下命令将文本文件file.txt中第一行内容按照指定的分隔符“,”分割,并将分割后的子字符串依次存储到变量a、b、c中:
set /p line=<file.txt
for /f "tokens=1,2,3 delims=," %%a in ("%line%") do (
set a=%%a
set b=%%b
set c=%%c
)
上述命令中,set /p line=<file.txt获取了文本文件file.txt中的第一行内容,并将其存储到变量line中。接着,使用for命令将line中的内容按照分隔符“,”进行分割,并分别将分割后的子字符串存储到变量a、b、c中。
文本提取
对于文本的提取,可以使用findstr命令来实现。findstr命令可以搜索文本文件中的指定文本,并将所有匹配的行输出到屏幕或者文件中。例如,以下命令可以在文本文件file.txt中查找包含“abc”的行,并将匹配的行输出到指定的文件output.txt中:
findstr /c:"abc" file.txt > output.txt
上述命令中,使用/c选项指定查找的文本为“abc”,并将输出的结果通过重定向符“>”输出到文件output.txt中。
文本重命名
在批处理中,可以使用ren命令来对文件进行重命名。ren命令通过指定原始文件名和新文件名来对文件进行重命名。例如,以下命令可以将当前目录中所有扩展名为.txt的文件重命名为扩展名为.doc的文件:
ren *.txt *.doc
上述命令中,使用通配符“*”指定要重命名的文件名,并将原始文件名中的扩展名.txt替换为新文件名中的扩展名.doc,从而实现文件批量重命名。
总结
以上就是批处理中的文本分割、提取和重命名的相关操作。批处理是一种功能强大的命令行语言,能够方便地对文本进行各种操作。对于初学者来说,一定要多多练习,加深对命令行的理解,以便更好地理解和应用批处理中的各种命令。
批处理是一种简单但功能强大的脚本语言,适用于 Windows 系统。它可以用于处理各种任务,包括文件和文件夹的操作,系统设置,网络管理等等。本文将重点讨论如何使用批处理脚本分割提取重命名文本内容。
一、分割文本内容
假设我们有一个文本文件,其中包含多个单词,每个单词之间用空格分隔。我们想将这些单词分开,并将它们存储到一个数组中。以下是一个简单的批处理脚本来完成这个任务:
@echo off
setlocal enabledelayedexpansion
set /p input=Enter input file name:
set /a count=0
for /f "tokens=*" %%a in ('type %input%') do (
for %%b in (%%a) do (
set /a count+=1
set words[!count!]=%%b
)
)
echo The words are:
for /l %%i in (1,1,%count%) do echo !words[%%i]!
首先,我们使用 set /p 命令提示用户输入文件名。然后,我们使用一个计数器变量 count 来跟踪存储在数组中的单词数量。在 for /f 循环中,我们使用 type 命令来读取文本文件中的内容。每个单词都将用 for 循环分离出来,并存储到数组 words 中。最后,我们使用 for /l 循环迭代数组并输出每个单词。
二、提取文本内容
假设我们有一个包含许多行文本的文件,每行都有一个固定的格式,例如“Name: John Smith, Age: 30, Gender: Male”。我们想从每行中提取出姓名、年龄和性别,并将其存储到一个新的文本文件中。以下是一个批处理脚本来完成这个任务:
@echo off
setlocal enabledelayedexpansion
set /p input=Enter input file name:
set /p output=Enter output file name:
set count=0
(for /f "tokens=2,4,6 delims=," %%a in (%input%) do (
set /a count+=1
echo !count!. Name: %%a, Age: %%b, Gender: %%c
)) > %output%
echo The output file has been created.
在该脚本中,我们使用 set /p 命令提示用户输入文件名。然后,我们使用 for /f 循环来读取输入文件中的每一行。我们使用分隔符“,”和 tokens 参数来提取出姓名、年龄和性别。我们使用一个计数器变量 count 来跟踪输出文件中的行数。最后,我们将所有输出内容写入新文件并显示一条消息来提示用户。
三、重命名文本内容
假设我们有一些图片文件,它们都有一个类似于“img_xxx.jpg”的命名模式。我们想将这些文件重命名为“picture_xxx.jpg”。以下是一个批处理脚本来完成这个任务:
@echo off
setlocal enabledelayedexpansion
set /p folder=Enter folder name:
for %%a in ("%folder%\img_*.jpg") do (
set filename=%%~na
set filename=picture_!filename:~4!
ren "%%a" "!filename!%%~xa"
)
echo The files have been renamed.
在该脚本中,我们使用 set /p 命令提示用户输入文件夹的名称。然后,我们使用 for 循环遍历文件夹中所有的 img_*.jpg 文件。我们使用 set 命令将文件名存储到变量 filename 中。然后,我们使用字符串截取功能来删除前缀“img_”并添加新前缀“picture_”。最后,我们使用 ren 命令重命名文件,并显示一条消息来提示用户。
总结
本文涵盖了如何使用批处理脚本分割、提取和重命名文本内容。批处理脚本是一种强大的工具,可以自动化许多重复和繁琐的任务。通过运用适当的技术和知识,批处理可以大幅提高工作效率和减轻工作压力。
你可以使用Python编程语言来实现将文本按照指定内容分割并生成多个文件的任务。以下是一个示例代码,可以根据你提供的要求进行分割和重命名:

以上代码将会读取名为"STD.txt"的文件,按照":BIGEN"和":END"之间的内容进行分割,并将分割后的内容保存为以"STD" + "PN#"后面的数字命名的文件(例如STD1.txt、STD2.txt等)。
请确保在运行代码之前,将文件路径替换为你的实际文件路径。此外,代码中假设文件中的行以换行符分隔,如果文件的换行符不是标准的换行符,请根据实际情况进行调整。
希望这能帮助到你!如果有任何问题,请随时向我提问。
要使用BAT批处理脚本分割、提取和重命名文本,可以使用以下的示例代码作为参考,实现对于名为example.txt的文件中的每一行进行处理。
示例代码如下:
@echo off
setlocal enabledelayedexpansion
REM set delimiter
set "delim=,"
REM set count
set "count=0"
REM iterate through each line in the file
for /F "tokens=* delims= " %%a in (example.txt) do (
REM increment count
set /a count=!count!+1
REM split line into two
for /F "tokens=1,2 delims=%delim%" %%i in ("%%a") do (
set "part1=%%i"
set "part2=%%j"
REM rename files
ren "!part1!.txt" "!part2!.txt"
)
)
endlocal
pause
该批处理脚本中,每行文本都被分割为两个部分,使用了逗号 (,) 当做分隔符。然后,脚本使用第一部分的名字找到相应的文件,然后将文件重命名为第二部分。这就是一种在批处理中分割、提取和重命名文本的方法。
请注意,你需要根据具体的任务进行代码修改。
参考newbing
你可以使用批处理脚本来实现将一个大的TXT文本根据指定内容分割成多个文本文件,并按照指定规则对这些文件进行重命名。下面是一个示例的批处理脚本,可以根据你的需求进行修改:
@echo off
setlocal enabledelayedexpansion
set "filename=STD.txt"
set "delimiter=:END"
set "prefix=STD"
for /f "delims=" %%a in ('findstr /n "^" %filename%') do (
set "line=%%a"
setlocal enabledelayedexpansion
set "line=!line:*:=!"
if "!line!"=="%delimiter%" (
set /a "count+=1"
) else (
echo !line!>> %prefix%!count!.txt
)
endlocal
)
ren *.txt %prefix%PN#空格*.txt
请根据你的具体需求修改以下内容:
STD.txt
替换为你要分割和重命名的TXT文件路径。:END
替换为你指定的内容作为分割的标识符。STD
替换为你在重命名过程中使用的前缀。这个批处理脚本会逐行读取STD.txt
文件的内容,根据:END
标识符将文件分割成多个小文件,并按照STD+PN#空格+数字
的命名规则对这些文件进行重命名。