VBSでファイル移動する部分を足したい
取り敢えずスクリプト的には動いている
(不要部分とか書き換え途中のままで動作問題なくても間違っている部分が有ると思います
誤動作までは至らないので放置しているというだけです)
のですがそのスクリプトに一部の通過ファイルを所定の位置に移動させたいと思います。
ソースの目的と理屈はTSファイルをBATからTSファイルをVBSに送りaviutilに処理させると言う物です。
最終的にTSファイルだけを移動させる形にしたいと言う感じです。
On Error Resume Next
Set Args = WScript.Arguments
Const ForReading = 1
'************TSファイル関連の設定*************
' テンポラリパス
Const TMP_FOLDER = "E:\tsENC\mp4\"
' エンコードしたデータを出力するフォルダ(最後の文字は"\")
Const OUTPUT_FOLDER = "E:\tsENC\mp4\"
'*************ツール関連の所在*************
' 出力プラグイン番号(メニューの一番上が0)
Const OUTPUT_PLUGIN = 0
' 出力ファイルの拡張子
Const OUTPUT_EXT = ".mp4"
' BonTsDemuxのフルパス
Const BonTsDemux_PATH = "E:\aviutil\aviutl99i8\BonTsDemux.exe"
' mmeのフルパス
Const mme_PATH = "E:\aviutil\AVIUTIL\mme.exe"
' AviUtlのフルパス
Const AVIUTL_PATH = "E:\aviutil\AVIUTIL\aviutl.exe"
' AviUtl Controlを置いてあるフォルダ(最後の文字は"\")
Const AUC_FOLDER = "E:\aviutil\AVIUTIL\" ' = スクリプトと同じフォルダ
Dim WHSHell, oExec, Fs
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set Fs = CreateObject("Scripting.FileSystemObject")
Function Auc(command, arg)
Auc = WSHShell.Run("""" & AUC_FOLDER & "auc_" & command & ".exe"" " & arg, 2, True)
End Function
Dim i, tmp, tmpm2v, tmpwav, tmpgl, output, pid, hwnd
' AviUtlを起動
hwnd = Auc("exec", """" & AVIUTL_PATH & """")
If hwnd = 0 Then
Call WScript.Quit(-1)
End if
For i=0 to Args.Count - 1
tmp = TMP_FOLDER & Fs.GetBaseName(Args(i))
tmpm2v = tmp & ".m2v"
tmpwav = tmp & ".wav"
tmpgl = tmp & ".gl"
output = OUTPUT_FOLDER & Fs.GetBaseName(Args(i)) & OUTPUT_EXT
' TSファイルを分割
Call WSHShell.Run("""" & BonTsDemux_PATH & """" & " -i """ & Args(i) & """ -o """ & tmp & """ -delay 167 -start -quit", 0, True)
' glファイルを作成
Call WSHShell.Run("""" & mme_PATH & """ -g -q """ & tmpm2v & """", 0, True)
' M2Vファイルを開く
Call Auc("open", CStr(hwnd) & " """ & tmpm2v & """")
Call WScript.Sleep(200)
' WAVファイルを開く
Call Auc("audioadd", CStr(hwnd) & " """ & tmpwav & """")
' プロファイルを設定する
Call Auc("setprof", CStr(hwnd) & " " & CStr(PROFILE))
Call WScript.Sleep(200)
' 出力プラグインから出力する
Call Auc("plugbatch", CStr(hwnd) & " " & CStr(OUTPUT_PLUGIN) & " """ & output & """")
Call WScript.Sleep(200)
' ファイルを閉じる
Call Auc("close", CStr(hwnd))
' テンポラリファイルを削除する
Call Fs.Delete(tmpm2v)
Call Fs.Delete(tmpwav)
Call Fs.Delete(tmpgl)
Next
Dim Fname
Dim Fname2
Dim FSO
Set Fname = WScript.Arguments
If Fname.Count = 0 Then
WScript.Echo "ファイルをドラッグしてください。"
WScript.Quit
End If
'Set FSO = CreateObject("Scripting.FileSystemObject")
Fname2 = FSO.GetFile(Fname(0)).Path
FSO.MoveFile Fname2, move & FSO.GetFileName(Fname(0))
Set Fname = Nothing
Set FSO = Nothing
' スクリプトで起動したAviUtlを終了する
Call Auc("exit", CStr(hwnd))
お礼
ええこんな感じでOKです。 d&dのムーブの最小限の構文知りたかったので凄く助かりました。 同時に他のスクリプトと見比べてやっている事が何となく分かったので 他のスクリプトの組み込みも出来そうなので助かりました。 あとは何とか自力でもやってみます。