我有一个每天生成的文本文件,该文件有20到50行,每行以一个设置分隔符结束,当前〜但可以更改为任何内容。我想把这个文本文件分成20到50个不同的文件,每个文件一行。理想情况下,我想从Windows批处理文件中执行此操作,或者至少是我可以编写脚本以便每天运行的程序。感谢您提供的任何帮助,谢谢!
示例输入文件:
GS*SH*CSMZ9*20131209*0908*000000001*X*004010|ST*856*0001|BSN*00*000000001~
GS*SH*CSMZ9*20131209*0912*003400004*X*004010|SG*834*0001|TSN*00*000000004~
GS*SH*CSMZ5*20131209*1001*000040007*X*004010|ST*855*0001|BSN*00*000000007~
GS*SH*CSMZ9*20131209*1019*000000010*X*004010|SG*856*0001|BGN*00*000000010~
答案 0 :(得分:4)
for /f "tokens=1*delims=:" %%a in ('findstr /n "^" "file.txt"') do for /f "delims=~" %%c in ("%%~b") do >"text%%a.txt" echo(%%c
答案 1 :(得分:0)
我在这里提出了python。任何shell脚本都更具可读性。
f=open("filename")
lines = f.read().split('~')
for (n, line) in enumerate(lines):
open( "newname{}".format(n), "w" ).write(line)
答案 2 :(得分:0)
这应创建名为00000001.txt
的文件,并增加每行的编号。
如果任何行包含!
,则需要进行额外修改。
@echo off
setlocal enabledelayedexpansion
set c=0
for /f "delims=" %%a in (file.txt) do (
set /a c+=1
set name=0000000!c!
set name=!name:~-8!.txt
>!name! echo %%a
)
答案 3 :(得分:0)
@ECHO OFF
SETLOCAL
SET "destdir=c:\destdir"
FOR /f "tokens=1*delims=:" %%a IN ('findstr /n "." q21239387.txt') DO (
>"%destdir%\filename%%a.txt" ECHO(%%b
)
GOTO :EOF
其中q21239387.txt
是我用作测试输入的文件的名称。
在目标目录中创建的文件filename1.txt
.. filename99.txt
(99是文件中的#行)
注意 - 如果出现问题,将无法正确输出以开头的源行:。