Windows批处理按长度分割长字符串64

问题描述:

我试图弄清楚这一点,但没有任何运气。任何人都可以帮忙吗?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个字符的循环 - 在一个批处理脚本?

任何帮助将不胜感激。

@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