2011-02-08 8 views
0

アプリケーションから複数のファイルをダウンロードしようとしています。そのためのシェルコマンドは 'ファイル名をダウンロード'です。ループ/スキップをバッチで作成する方法

ダウンロードしなければならないすべてのファイル名を含むテキストファイルがあります。上記のコマンドを実行するときにスクリプト/コマンドを実行するだけです。 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

+0

@deppfx、私はそのスクリプトから始め、それを改善して欲しいと思っています。リモートファイルがローカルファイルと異なるかどうかはあなたが知っていないので、場合によってはダウンロードする必要があります。あなたがチェックの方法を提供することができない限り、もちろん(チェックサム、サイズなど)。 – paxdiablo

関連する問題