- 締切済み
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))
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ShowMeHow
- ベストアンサー率28% (1424/5027)
オラ、馬鹿だから、だらだら長くて、他ソフトに依存するスクリプトをマル投げされてもよくわからないし、「目的と理屈」っていうのもよくわかんないんだよね。 どちらかというと、具体的に「今あるスクリプトに追加することで、こういう場所にあるこういうファイルをどうしたいんだけど、どうしたらよいのか」と聞かれたほうが答えやすいんだけどな。 >TSファイルをBATからTSファイルをVBSに送り ??? ・「TSファイル」って何ですか? 特定の拡張子ですか、それともtextstreamかなんかですか? ・「BAT」って何ですか? ファイルですか、フォルダですか、 ・「VBS」って何ですか? スクリプトのことですか? とすると、スクリプトにファイルを送るってどういう意味ですか? ま、FSOでcopyfileというメソッドがあるから、movefileの代わりに使うと、移動の代わりにコピーするってことにはなるけど、、、目的によってはもしくは、コピーしてから移動するとか、、、 http://msdn.microsoft.com/ja-jp/library/cc428016.aspx http://msdn.microsoft.com/ja-jp/library/cc428039.aspx
- MARU4812
- ベストアンサー率43% (196/452)
自分の力で解決する気が無いのであれば、お金を出して プログラマを雇って下さい。 無料の掲示板で丸投げで何でも解決できるのであれば、 それはプログラマを蔑ろにする行為になりますので。 例えば貴方が花屋さんだとして、 「花が欲しいです」という人に「どうぞ持っていってください」 と言うかどうかです。協力する人は5%にも満たないでしょう。 「自分で種から育てたのですが、2日で枯れてしまいました。 なにが悪かったか教えて下さい」 という人とは全く扱いが異なります。これなら半数の人は協力 してくれるでしょう。 「昨日、貴方のお店の花を買って花瓶に飾っているのですが 長持ちさせる方法はありますか?」なら80%以上の人の 協力が得られるでしょう。 協力してくれる人が1%でもいれば待つと言うのであれば 止めはしませんが、99%の人が協力してくれない事実も 認識しておきましょう。多くの場合、反感を買ってますので。