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
を削除して実際の作業を行います。
ファイルが見つからない、または既にダウンロードされている場合はどうですか?前回私が何か問題に直面したときに終了したと似たようなことをしたので、どうすればこのようなエラーをスキップ/処理できますか? – deppfx
@deppfx、私はそのスクリプトから始め、それを改善して欲しいと思っています。リモートファイルがローカルファイルと異なるかどうかはあなたが知っていないので、場合によってはダウンロードする必要があります。あなたがチェックの方法を提供することができない限り、もちろん(チェックサム、サイズなど)。 – paxdiablo