gpt4 book ai didi

loops - 批处理脚本中的 for 循环增加两个或多个变量

转载 作者:行者123 更新时间:2023-12-04 05:15:06 27 4
gpt4 key购买 nike

是的,批处理脚本。我知道。对不起。

最终目标是生成一个包含 XML 元素的文件。到目前为止,这些元素都是手工制作的,但一定有更好的方法。我的第一个想法是做一个批处理脚本。到目前为止,我一直在做的是复制/粘贴,手动将 +1 添加到 id、page 和 src="page_#"项目。 xml 文件只包含 40 个条目时很好。当我们超过 100 或更多时,情况就不太好了。

目标:需要增加元素,例如 导航点 id=# , 页号 , 和 内容 src=page_# 在下面:

<navPoint id="1"><text>Page 1</text><content src="page_1.html"></navPoint>

我有一个可以循环和更新 ONE 变量的工作批处理脚本,因此它是:
echo
for /l %%x in (1, 1, 8) do (
echo ^<navPoint id="navPoint-%%x"^>^<navLabel^>^<text^>Page %%x^</text^>^</navlabel^>^<content src="page_%%x.html"/^>^</navPoint^>)>>C:\Users\me.txt

最后一部分 >>C:\Users\me.txt 将其发送到 txt 文件。

然而,我希望页码从 2 开始,而不是 1。我的批处理脚本运行良好,%%x 从 1 开始并均匀递增。我需要循环中的另一个大于 %%x 的变量。

所以结果是:
<navPoint id="1"><text>Page 2</text><content src="page_1.html"></navPoint>

下一个结果是:
<navPoint id="2"><text>Page 3</text><content src="page_2.html"></navPoint>

ETC...

这如何在批处理脚本中完成?我以为它会像 一样简单%%x+1 但这不是...

最佳答案

  • 您可以使用 set /a 进行算术运算.做help set从命令行阅读它。
  • 如果您在 block 内设置变量(例如 if、for),您需要使用 setlocal EnableDelayedExpansion 启用延迟变量扩展.然后你使用 !而不是 %扩展变量。如果您在代码块之外,您可以返回使用 % . help set还将告诉您有关延迟扩展的信息。

  • 使用这两条信息,您可以将代码更改为此以获得您想要的:
    @echo off
    setlocal EnableDelayedExpansion
    for /l %%x in (1, 1, 8) do (
    set /a PAGENUM=%%x+1
    echo ^<navPoint id="navPoint-%%x"^>^<navLabel^>^<text^>Page !PAGENUM!^</text^>^</navlabel^>^<content src="page_%%x.html"/^>^</navPoint^>
    )>>C:\Users\me.txt

    关于loops - 批处理脚本中的 for 循环增加两个或多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14388486/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com