2

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

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

目标:需要在下面增加元素,例如navPoint id=#Page #内容 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一样简单,但事实并非如此......

4

1 回答 1

3
  1. 你可以用set /a. help set从命令行执行以阅读它。

  2. 如果在块内设置变量(例如iffor),则需要使用 启用延迟变量扩展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
于 2013-01-17T21:56:56.660 回答