2013-05-01 114 views
-1

我試圖弄清楚這一點,但沒有任何運氣。任何人都可以幫忙嗎?Windows批處理按長度分割長字符串64

我有一個文件:input.txt 該文件包含一個長字符串 - 我想將長字符串拆分爲64個長字符串塊,並將內容保存到不同的文件中。

我沒有太多到目前爲止,我知道我必須使用for循環:

echo off 
set /p base64=<input.txt 

for /f "%base64:~0,64%" %%G IN %base64% DO echo %%G 

但如何讓在每行64個字符的循環 - 在一個批處理腳本?

任何幫助將不勝感激。

回答

1
@ECHO OFF 
SETLOCAL 
(
FOR /f "delims=" %%i IN (input.txt) DO SET longline=%%i&call:breakit 
)>output.txt 
GOTO :eof 

:breakit 
ECHO %longline:~0,64% 
SET longline=%longline:~64% 
IF DEFINED longline GOTO breakit 
GOTO :EOF 

這應該做你想要的東西 - 但它可能會依賴於文件的內容一批具有敏感性某些字符。

+0

太酷了 - 非常感謝。 – user2339564 2013-05-01 14:24:17

+0

順便說一下..當文件中的字符串與你的腳本很長時,我得到一個錯誤...你知道它爲什麼可以嗎? 對文本文件中字符串的長度有任何限制嗎? 我有一個文件,該應用程序。 11388個字符。但它不適用於你的腳本。 但是,如果我把字符串切成8183個字符,腳本就可以工作。 奇怪......你知道爲什麼嗎? – user2339564 2013-05-02 07:44:35

+0

許多系統和實用程序都有限制。 CMD.EXE不允許超過8183個字符的字符串。我相信FINDSTR限制在4K。例如,文件名長度也有限制。 8183看起來確實是一個很奇怪的數字 - 儘管它是正確的(對於像var這樣的3個字符的變量名)對於1個1個字符的名字,它是8185。對於終端'null'= 8188,'='+ 1的變量名+ 1的值爲8185 + 1。因此可能還有一個4字節的指針,也就是總共更多的「二進制」8192. – Magoo 2013-05-02 08:43:39