使用字符串拆分列表和标签包围的批处理脚本限制

亚历克斯

我有以下代码,它获取以逗号分隔的字符串列表,用一些标记将它们括起来,并将输出写入文件。适用于短列表,但对于长(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 处停止)

我假设它与某些限制有关,但无法弄清楚我如何扩展它以及如何扩展它(或者如果它不可能扩展 - 知道什么是限制会很好)

aschipfl

set /P命令接受一行最多 1021 个字符/字节的文本,这就是您的文本被截断的原因。

要接受更长的行,即大约 8190 个字符/字节的行,请改用for /F循环在您的代码中,这意味着替换:

SET /p CS_VALUES=<%1

经过:

for /F "usebackq delims=" %%A in ("%~1") do set "CS_VALUES=%%A"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章