如何批量创建循环/跳过

时间:2011-02-08 06:21:47

标签: loops error-handling batch-file

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

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

到目前为止,我有使用 go $ download 等操作符的想法。然后使用包含文件名列表的文本文件向操作员提供。提前谢谢。

1 个答案:

答案 0 :(得分:2)

对于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

如果您使用的是bash之类的shell,则可以使用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以使其完成实际工作。