首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批处理脚本限制,包含字符串的拆分列表和标记。

批处理脚本限制,包含字符串的拆分列表和标记。
EN

Stack Overflow用户
提问于 2017-12-18 13:25:26
回答 2查看 52关注 0票数 0

下面的代码获取逗号分隔的字符串列表,用一些标记包围它们并将输出写到文件中。对于短列表来说很好,但是对于长(200个字符串)列表,我可以得到一半的项。

代码语言:javascript
复制
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,我将得到如下内容:

代码语言:javascript
复制
<quer:string>A00000</quer:string>
<quer:string>A00001</quer:string>
<quer:string>A00002</quer:string>
....
<quer:string>A00</quer:string>

(在该项中间的某个变量<200处停止)

我假设它与某些限制有关,但不知道该如何扩展它(或者如果不可能扩展--知道限制是什么会很好)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-18 14:38:29

command接受长度高达1021个字符/字节的文本行,这就是文本被截断的原因。

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

代码语言:javascript
复制
SET /p CS_VALUES=<%1

出自:

代码语言:javascript
复制
for /F "usebackq delims=" %%A in ("%~1") do set "CS_VALUES=%%A"
票数 1
EN

Stack Overflow用户

发布于 2017-12-18 14:05:06

下面是一个For /F选项示例。

代码语言:javascript
复制
@Echo Off
>"D:\tmp.txt" (For /F "UseBackQ Delims=" %%A In ("%~1"
        ) Do Echo ^<quer:string^>%%~A^</quer:string^>)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47869501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档