2014-01-20 70 views
0

我有一个每天生成的文本文件,每行生成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~ 

回答

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 
+0

我想这对文件和输出我得到的是汉字。类似于我的文件的示例应该是这样的:100 * 548477 * 44399947566 * 93948575647〜然后换行,下一行将采用相同的格式。任何想法为什么这不起作用?谢谢! – tsHunter

+0

请显示您的输入行更多 – Endoro

+0

添加了一个示例输入文件。谢谢! – tsHunter

0

我在这里提出蟒蛇。更可读的是任何shell脚本。

f=open("filename") 
lines = f.read().split('~') 
for (n, line) in enumerate(lines): 
    open("newname{}".format(n), "w").write(line) 
+2

'Python'不是Windows发行版的一部分。 – Endoro

+0

它是这里的任何窗口的一部分:-) – pentadecagon

+0

我想尝试避免python,如果我可以但它很高兴知道它的一个选项,如果需要,谢谢 – tsHunter

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 
) 
+0

嗯,似乎无法得到这个工作。无法创建任何文件。谢谢 – tsHunter

+0

我测试过它,它工作。你是否将文本文件命名为'file.txt'? – foxidrive

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是在文件中#线)

注 - 将与开始无法正常输出源线:如果这是一个问题。

相关问题