批处理脚本限制,包括拆分字符串列表和带标记的环绕声

问题描述 投票:0回答:2

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

我认为它与某些限制相关,但无法弄清楚哪些以及如何扩展它(或者如果它不可能扩展 - 那将是很好的知道什么是限制)

windows batch-file
2个回答
1
投票

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

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

SET /p CS_VALUES=<%1

通过:

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

0
投票

这是你的For /F选项示例。

@Echo Off
>"D:\tmp.txt" (For /F "UseBackQ Delims=" %%A In ("%~1"
        ) Do Echo ^<quer:string^>%%~A^</quer:string^>)
© www.soinside.com 2019 - 2024. All rights reserved.