我有以下代码,获取逗号分隔字符串的列表,用一些标记环绕它们并将输出写入文件。 行之有效的短名单,但对于长期(200串)名单,我得到一半的项目带分割列表的字符串和环绕标记的批处理脚本限制
setlocal enabledelayedexpansion
SET /p CS_VALUES=<%1
SET TEMP_FILE="D:\tmp.txt"
>%TEMP_FILE% ECHO:
FOR %%i in (%CS_VALUES%) do (
SET query="<quer:string>%%i</quer:string>"
>>%TEMP_FILE% ECHO !query:~1,-1!
)
ECHO %TEMP_FILE%
所以对于输入:A00000, A00001, .... , A00200
我会得到这样的:
<quer:string>A00000</quer:string>
<quer:string>A00001</quer:string>
<quer:string>A00002</quer:string>
....
<quer:string>A00</quer:string>
(停在一些变量< 200在该项目的中间)
我认为它与某些限制有关,但无法弄清楚哪些以及如何扩展它(或者如果它不可能扩展 - 将是很好的k现在什么是限制)
['设置/P'](http://ss64.com/nt/set.html)限制一个字符串1021(!)个字符,所以这就是它被截断的原因;通过['for /F'](http://ss64.com/nt/for_f.html)读取文本文件将限制行数为〜8190个字符。如果你有更长的行,不要使用批处理脚本... – aschipfl
8k是伟大的,我将如何去改变我的代码? – AlexD
只需用下面的代码替换SET/p CS_VALUES = <%1':'for/F'usebackq delims =“%% A in(”%〜1“)do set”CS_VALUES = %% A“' – aschipfl