2011-02-08 86 views
0

我試圖從應用程序下載一大塊文件。它的shell命令是'去文件名下載'。如何批量創建循環/跳過

我有一個包含所有我要下載的文件名的文本文件。我所要做的就是運行一個腳本/命令,以便執行上述命令時 1.文件名從文件&中選取,執行時使用上述命令 2.現有文件/不可用文件被跳過 3。該過程然後在列表中

到目前爲止,我有這樣的想法使用像運營商去$下載 &然後用含有文件名列表的文本文件養活運營商的下一個文件繼續進行。提前致謝。

回答

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,你可以使用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以使其完成實際工作。

+0

怎麼樣的情況下,文件丟失或已經被下載。我怎樣才能跳過/處理這樣的錯誤,因爲上次我做了類似於你所說的,當它面臨一些問題時就終止了。 – deppfx 2011-02-08 06:50:11