【问题标题】:Create a batch file to download multiple url [closed]创建一个批处理文件以下载多个 url [关闭]
【发布时间】:2013-04-13 05:06:38
【问题描述】:

下载者是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
...
..
.

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

【问题讨论】:

  • 我编辑了这个问题的鼻涕,但仍然觉得我几乎没有留下任何痕迹。我今晚要放弃了。

标签: windows variables batch-file cmd


【解决方案1】:

试试:

for /f "delims=" %%i in (names.txt) do download.exe -u "www.xyz.com/%%~i.zip" -o "%%~i.zip"

【讨论】:

  • 这可以完成工作,但是当我使用 -o "%%i.flv" 时,它说无法打开文件 "myfilenameinnames.txt"
  • 我的 names.txt 具有类似 kd/10 的结构,因此“/”会导致冲突,因为我们无法正确保存它,或者我可以使用其他名称文件跳过 / 部分???
  • 您不能在 Windows 中使用 Unix/Mac 名称,请尝试 copy nul "my/text.txt" 并查看错误消息。之前在 Unix/OSX 中重命名文件。
  • 覆盖names.txt? (是/否/全部):是 1 个文件已复制。但是你知道 -o 标签是输出文件,所以如前所述 names.txt 有“/”我可以使用两个标签,一个用于 %%i,一个用于将 -o %%k 指定为文件名,我希望它应该加载名称.txt 用于下载 zip 和其他文件,例如 down.txt 用于输出文件
  • 好的,我不知道download.exe这个程序,如果它需要/斜杠。 -o 参数的名称来自名称文件 names.txt
【解决方案2】:
@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

【讨论】:

  • 网址未找到,请提供更多示例
  • @user2276700 你能说出你使用的确切的for 行以及你从中获取输入的文件的内容吗?
  • @user2276700 - 也试试这个for /f %%i in (filename) do echo download.exe -u www.xyz.com/%%i -o %%i - 这只会回显命令而不是执行它 - 将帮助您找出问题所在。
  • 输出::;;down​​load.exe -u www.xyz.com/for -o for
  • 你把文件名放在(文件名)里了吗?文件包含什么?请输入您的 for 命令?我想你可能输入了for /f %%i in (for) do download.exe -u www.xyz.com/%%i -o %%i
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
  • 2016-02-26
  • 2014-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多