隠しファイルをバッチ処理して次のことを実行できるプログラムは存在しますか?
a) ドライブで MP3 を検索する
b) 128 kbs/秒から 64 kbs/秒にトランスコードする
c) ステレオからモノラルに切り替える
d) 以前のファイルを保存して上書きする
それとも、Windows デスクトップでこのタスクを実行するためのスクリプトを作成できますか?
un*x を使用している場合、バッチ処理に最適なツールは次のfind
とおりです。
find /path/to/foo -name "*.mp3"
/path/to/foo 内の「*.mp3」に一致するすべてのファイルとそのすべてのサブディレクトリが表示されます。
獣であるためfind
、おそらくマンページを確認する必要があります。
find
マッチごとに呼び出されるスクリプトを渡すことができます。たとえば、次のようにすると、すべてのファイルに対して "ls -l" が実行されます(たとえば、"mysounds.mp3/" という名前のディレクトリは除きます。これが の-type f
目的です)。
find /path/to/foo -type f -name "*.mp3" -exec ls -l \{\} \;
シェルがこれらの特殊文字を解釈しないようにするために、中括弧とセミコロンはバッククォートでエスケープされることに注意してください。
インプレース変換 (古いファイルを上書きする) を行うスクリプト (名前が付けられconvertmp3.sh
、現在の作業ディレクトリにある) がある場合は、次のことができます。
find /path/to/foo -type f -name "*.mp3" -exec ./convertmp3.sh \{\} \;
このようなスクリプトは次のようになります。
#!/bin/sh
INFILE="$1"
TMPFILE="${INFILE}.mp3"
ffmpeg -i "${INFILE}" -ac 1 -b 64k "${TMPFILE}" && mv "${TMPFILE}" "${INFILE}"
ここでは一時ファイルを使用していることに注意してください。そうしffmpeg
ないと、ソース ファイルが完全に読み取られる前に上書きが開始され、エラーで停止するためです。また、スペースなどを含むファイル名から保護するために、ファイル名を引用符で囲むことも忘れないでください。
また、このスクリプトは、入力ファイルが既に目的の形式であるかどうかをチェックしないため、再エンコードされる可能性があることに注意してください。