ブログを作る※無料・簡単アフィリ    ブログトップ | 楽天市場
069591 ランダム
《コマンドライン活用術 No.2》 au… (パソコン・家電)楽天ブログ 【ケータイで見る】 【ログイン】
kiraruノートの《切れ端》
ホーム 日記 プロフィール オークション 掲示板 ブックマーク お買い物一覧

PR

カレンダー

2009年8月
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
<一覧へ今月次の月>

キーワードサーチ

▼キーワード検索
楽天ブログ内
このブログ内
ウェブサイト

▼タグ検索(楽天ブログ内)
日記 フォト 動画

カテゴリ

バックナンバー

モバイル

m ケータイに
このブログの
URLを送信!

 

書き留めておきたき事

<< 前へ次へ >>一覧コメントを書く

2005年08月02日 XML このブログを購読する

 《コマンドライン活用術 No.2》 auoencを手軽に...
[ コマンドライン ]    

前回(No.1)の応用
特定のフォルダの下にあるすべてのWAVファイルを連続してエンコする。

前回のコマンドスクリプトからpause文(下から2行目)を削除します。
:end
endlocal

wavファイル群の格納されているフォルダを、c:\dataとした場合、
コマンドプロンプトで
>for %i in (c:\data\*.wav) do aacenc %i
とタイプすることにより連続して全てのwavファイルをmp4(aac)にエンコできます。

今回のメイン
auoencもコマンド指定するのは面倒くさいですよね。
これを思いっきり簡単に指定できるように、パラメタはファイル名
(AVSスクリプト)のみとすることにしましょう。
こうすれば、NO.1と同様にして運用できるので。

auoencのとるパラメタは、
auoenc auofile cfgfile srcfile dstfile priority
でした。
ここでは、exavi_vfr.auoを使ってXviDでqt=2.5でエンコする場合を考えてみます。
なお、exavi_vfr.auo及びvfr25.cfgファイルは、vfrpathで指定された場所に置くものとします。

そして、このスクリプトのキモの部分ですが、
出力ファイル名は、avsスクリプト中からファイル名を抽出して使います。

AVISource, OpenDMLSource, Mpeg2Source等で
かつ拡張子が、.aviか.d2vである必要がありますがこの変更は簡単です。
例えば、AddRange("foo.vcf")から、出力ファイル名"foo.avi"を抽出したい場合は
set targetcmd=AddRange
に変更するだけです。

最後にこれも応用編としてフォルダ下の全てのavsを処理するようにもできますが、それは各自考えてください。

----- vfr25.cmd -----

@echo off
rem *******************************************
set vfrpath=%SystemDrive%\bin\bin\vfrout
set auoenc="%SystemDrive%\bin\bin\auoenc.exe"
set dstdir=
set targetcmd=source

rem *******************************************

setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('findstr /i "^[^#]*%targetcmd%" %1') do (
set src=%%i
)

for /f "usebackq tokens=1-5 delims=,()" %%i in ('!src!') do (
set src1=%%~i
set src2=%%~j
set src3=%%~k
set src4=%%~l
set src5=%%~m
)

set n=5
for /l %%i in (5,-1,1) do (
if "!src%%i!" == "" (set /a n=%%i-1)
)

for /l %%i in (1,1,%n%) do (
if "!src%%i:.avi=!" neq "!src%%i!" (set src=!src%%i!& goto hit)
if "!src%%i:.d2v=!" neq "!src%%i!" (set src=!src%%i:.d2v=.avi!& goto hit)
if "!src%%i:.vcf=!" neq "!src%%i!" (set src=!src%%i:.vcf=.avi!& goto hit)
)

:nohit
for /l %%i in (1,1,5) do (echo !src%%i!)
echo ファイル名を特定できませんでした& goto end

:hit
set src=%src:"=%
:delspace_loop
if "%src:~0,1%" == " " (set src=%src:~1%& goto delspace_loop)

for /f "delims=" %%i in ("%src%") do (
if not defined dstdir (set dstdir=%%~dpi)
if !dstdir:~-1! neq \ (set dstdir=!dstdir!\)
set dst=!dstdir!%%~ni.avi
)

if exist "%dst%" (echo 出力ファイル"%dst%"が既に存在します& goto end)

%auoenc% "%vfrpath%\exavi_vfr.auo" "%vfrpath%\vfr25.cfg" "%1" "%dst%" 0

:end
pause
endlocal




補足
●ファイル名の抽出は、最後にhitした行の値となるので
 複数のsource行が無いようにする。

 ただしコメントにした行は存在してもかまわない。
 ( # AVISource(...)行はhitしない)

 もしも複数行、該当する行が存在する場合は、検索文字をもっと厳密にする。
 (AVISourceとWavSourceがある場合、AVISourceを検索文字に指定する)

 またAddRangeを指定する場合、以下のような行もhitするので該当行より
 下には記述しないように気をつける。
   LoadPlugin("...\AddRange.dll")
   function AddRange(clip ...) {

訂正
■%src%の中に"がある場合、変になることがあるため
for /f "delims=,() tokens=1-5" %%i in ("%src%") do (
     ↓
for /f "usebackq tokens=1-5 delims=,()" %%i in ('!src!') do (

■遅延環境変数の展開時、src%%i変数がNULLだとif文でエラーとなるため
  NULLにならないように制限する

set n=5
for /l %%i in (5,-1,1) do (
  if "!src%%i!" == "" (set /a n=%%i-1)
)



■tokensで区切った場合、%%~i等で"を削除できない模様
:hit
set src=%src:"=%
を追加 (2005.8.5)


最終更新日  2005年08月05日 23時53分15秒
コメント(0) | トラックバック(0) | コメントを書く
この記事のトラックバックURL:
http://tb.plaza.rakuten.co.jp/kiraru2002/diary/200508020000/7cc65/


■コメント

お名前
タイトル
メッセージ
・メッセージ本文は全角で800文字までです。
・書き込みに際しては楽天ブログ規約の禁止事項や免責事項をご確認ください
・ページの設定によっては、プルダウンで「顔選択」を行っても、アイコンが表示されません。ご了承ください。


<< 前へ次へ >>一覧コメントを書く一番上に戻る


Powered By 楽天ブログは国内最大級の無料ブログサービスです。楽天・Infoseekと連動した豊富なコンテンツや簡単アフィリエイト機能、フォトアルバムも使えます。デザインも豊富・簡単カスタマイズが可能!

Copyright (c) 1997-2009 Rakuten, Inc. All Rights Reserved.