2014-01-20 110 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是在文件中#線)

注 - 將與開始無法正常輸出源線:如果這是一個問題。

相關問題