-2

下载器是download.exe

@echo off
set /p %d% `enter file to load here`
download.exe -u www.xyz.com/1s21.zip -o 1s21.zip
download.exe -u www.xyz.com/1s22.zip -o 1s22.zip
download.exe -u www.xyz.com/1d23.zip -o 1d23.zip
download.exe -u www.xyz.com/1411.zip -o 1411.zip
download.exe -u www.xyz.com/%d%.zip -o %d%.zip
....
...
..
.

我可以使用将从另一个文件加载名称的变量%d%,这样我就不必再次编写整个程序了

%d%文件的结构看起来像这样

1s21
1s22
1s23
...
..
.

我想要的是读取包含名称的文件并将这些名称插入下载脚本。

4

2 回答 2

1

尝试:

for /f "delims=" %%i in (names.txt) do download.exe -u "www.xyz.com/%%~i.zip" -o "%%~i.zip"
于 2013-04-13T06:47:04.633 回答
1
@echo off
for /f %%i in (filename) do download.exe -u www.xyz.com/%%i -o %%i

这将做你想要的。

正常的

for %%i in (item1 item2 item3)

从括号之间读取列表

/f选项告诉它括号之间存在文件名,并且必须从文件中读取列表。

对于列表中的每个项目,do将调用后面的部分。

这假设文件的每一行只有一个文件名。

此外,如果您需要为列表中的每个项目执行多个命令,您可以执行

for /f %%i in (filename) do (
first command
second command
)

使用此示例调试您的问题

C:\tmp>type names.txt
kd11
kd12

C:\tmp>type down.bat
@echo off
setlocal EnableExtensions
for /f %%i in (names.txt) do echo %%i

C:\tmp>down.bat
kd11
kd12

如果上述方法有效,则将 for 更改为

for /f %%i in (names.txt) do download.exe -u www.xyz.com/%%i -o %%i
于 2013-04-13T05:13:58.157 回答