Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何批量创建循环/跳过_Loops_Error Handling_Batch File - Fatal编程技术网

Loops 如何批量创建循环/跳过

Loops 如何批量创建循环/跳过,loops,error-handling,batch-file,Loops,Error Handling,Batch File,我正在尝试从应用程序下载一大块文件。它的shell命令是“go filename download” 我有一个文本文件,包含我必须下载的所有文件名。我所要做的就是运行一个脚本/命令,以便在执行上述命令时 1.文件名从文本文件中提取并使用上述命令执行 2.跳过现有文件/不可用文件 3.然后,该过程将继续处理列表中的下一个文件 到目前为止,我的想法是使用一个像go$download这样的操作符,然后向操作符提供包含文件名列表的文本文件。提前感谢。对于Windows,您可以使用For/f处理文件并从中

我正在尝试从应用程序下载一大块文件。它的shell命令是“go filename download”

我有一个文本文件,包含我必须下载的所有文件名。我所要做的就是运行一个脚本/命令,以便在执行上述命令时 1.文件名从文本文件中提取并使用上述命令执行 2.跳过现有文件/不可用文件 3.然后,该过程将继续处理列表中的下一个文件


到目前为止,我的想法是使用一个像go$download这样的操作符,然后向操作符提供包含文件名列表的文本文件。提前感谢。

对于Windows,您可以使用
For/f
处理文件并从中创建命令。下面的脚本
supergo.cmd
显示了如何执行此操作:

@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "delims=" %%f in (list.txt) do (
    echo go "%%f" download
)
endlocal
以下文字记录显示了它的运作情况:

C:\Pax> type list.txt
file1.txt
file number 2.txt
another file.jpg

C:\Pax> supergo
go "file1.txt" download
go "file number 2.txt" download
go "another file.jpg" download
如果您使用的是类似shell的
bash
,则可以使用
sed
从输入文件创建临时脚本,然后运行该脚本:

#!/bin/bash
sed -e "s/^/echo go '/" -e "s/$/' download/" list.txt >/tmp/tempexec.$$
chmod u+x /tmp/tempexec.$$
. /tmp/tempexec.$$
rm -rf /tmp/tempexec.$$
这将在每行的开头放置一个
echo go'
,在末尾放置一个
'download
,然后将其标记为可执行并执行


在这两种情况下(Windows和
bash
),请删除
echo
,让它执行实际工作。

如果文件丢失或已下载,该如何处理。我如何跳过/处理此类错误,因为上次我做了类似于您所说的事情,但遇到问题时终止了。@deppfx,我会从该脚本开始,让它工作,然后要求改进。由于您不知道远程文件是否与本地文件不同,因此您必须下载它以防万一。当然,除非您能提供一种检查方法(校验和、大小等)。