Batch file Windows-wget使用--background和-O

Batch file Windows-wget使用--background和-O,batch-file,output,wget,Batch File,Output,Wget,我的批处理命令行有问题,这是: for /l %%X in (1, 1, 100) do wget --background -q --no-check-certificate -O ->>donnees_wget "https://aaaa/%%X" “->>”允许将所有下载内容附加到一个文件中 我不能同时使用背景(--background)和保存在输出(-O)文件中,我不明白这一点。 我的错误消息是“processus无法访问该文件,因为它被另一个processus使

我的批处理命令行有问题,这是:

for /l %%X in (1, 1, 100) do wget      --background -q --no-check-certificate -O ->>donnees_wget "https://aaaa/%%X"
“->>”允许将所有下载内容附加到一个文件中

我不能同时使用背景(--background)和保存在输出(-O)文件中,我不明白这一点。 我的错误消息是“processus无法访问该文件,因为它被另一个processus使用”

有人知道这个问题吗


非常感谢

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

所以,唯一的方法就是只启动wget的一个实例,它将进入后台进行工作,将所有输出添加到同一个文件中

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

@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)作为要从中检索URL的文件,将生成的列表通过管道传送到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 

非常感谢你的回答!我想后台会允许我同时发出多个请求,如果在批处理文件中不可能,后台的用途是什么?我想告诉一个朋友windows可以和Mac一样快,你有什么办法提高我的下载速度吗?我想到了Curl函数,它似乎更快。@user3137701,您可以在批处理文件中使用
--background
。您不能让多个wget实例同时将其输出写入同一个文件,无论是在windows还是mac中。wget和curl是为解决不同问题而设计的工具。如果您需要的是wget中的速度和功能,那么您可能需要的是HTTTrack(GUI和CLI)。