Windows-wget使用--background和-O

时间:2014-02-05 10:32:03

标签: batch-file output wget

我的批处理命令行出了问题,即:

for /l %%X in (1, 1, 100) do wget      --background -q --no-check-certificate -O ->>donnees_wget "https://aaaa/%%X"

“ - >>”允许将所有下载附加到一个文件。

我不能一起使用背景( - 背景)和保存输出(-O)文件,我不明白。 我的错误消息是“进程无法访问该文件,因为它被另一个进程使用”

有人对这个问题有所了解吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

>>不是由wget处理的,而是由cmd处理的。每次启动wget进程时,都要求cmd将此命令的输出发送到该文件,但是您不能让两个进程同时将其输出重定向到同一文件(而不是批处理脚本)

因此,执行您所指示的内容的唯一方法是仅启动一个wget实例,该实例将转到后台执行其工作,将所有输出添加到同一文件中。

要实现这一点,您需要生成一个临时文件,用于存储要由wget处理的网址。

@echo off

    set "tempFile=%temp%\wgetTest"
    (for /l %%X in (1 1 5) do (
        echo(https://aaaa/%%X
    ))>"%tempFile%"

    wget -i "%tempFile%" --background --no-check-certificate -o wget.log -O donnees_wget 

如果未使用--background(将wget进程与控制台分离),而不是生成临时文件,则可以使用-(stdin)将生成的列表传送到wget,作为文件来自要检索网址的地方

@echo off

    set "tempFile=%temp%\wgetTest"
    (for /l %%X in (1 1 5) do (
        echo(https://aaaa/%%X
    )) | wget -i - --no-check-certificate -o wget.log -O donnees_wget