Loops 如何批量创建循环/跳过
我正在尝试从应用程序下载一大块文件。它的shell命令是“go filename download” 我有一个文本文件,包含我必须下载的所有文件名。我所要做的就是运行一个脚本/命令,以便在执行上述命令时 1.文件名从文本文件中提取并使用上述命令执行 2.跳过现有文件/不可用文件 3.然后,该过程将继续处理列表中的下一个文件Loops 如何批量创建循环/跳过,loops,error-handling,batch-file,Loops,Error Handling,Batch File,我正在尝试从应用程序下载一大块文件。它的shell命令是“go filename download” 我有一个文本文件,包含我必须下载的所有文件名。我所要做的就是运行一个脚本/命令,以便在执行上述命令时 1.文件名从文本文件中提取并使用上述命令执行 2.跳过现有文件/不可用文件 3.然后,该过程将继续处理列表中的下一个文件 到目前为止,我的想法是使用一个像go$download这样的操作符,然后向操作符提供包含文件名列表的文本文件。提前感谢。对于Windows,您可以使用For/f处理文件并从中
到目前为止,我的想法是使用一个像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,我会从该脚本开始,让它工作,然后要求改进。由于您不知道远程文件是否与本地文件不同,因此您必须下载它以防万一。当然,除非您能提供一种检查方法(校验和、大小等)。