メェのボヤキ

ボヤいてます。NYSL。@mele。

SystemShock2の日本語化「SS2_TEXT.exe」の補助スクリプト

2014-09-21 | ユーティリティ
VBScriptです。
以下の太字の部分を拡張子.vbsで保存・実行して下さい。


' -----
' SS2_TEXT.exe 補助スクリプト(20140921611)

' このVBScriptと同じフォルダーにある日本語ファイルを、順次 SS2_TEXT.exe に渡していくスクリプトです。

' そのため、変換前の日本語データを保存したファイルの拡張子を .txt としてください。
' 例として LEVEL02.STR の場合は、変換前の日本語ファイルを LEVEL02.txt で保存しますと、
' SS2_TEXT.exe での変換時には、「SS2_TEXT.exe LEVEL02.txt LEVEL02.STR」の形で実行されます。

' 変換後の .STR ファイルは、jp_converted フォルダーに保存されます。

' 同じフォルダーに SS2_TEXT.exe を必要とし、
' 変換後には、別途、.STR ファイルを strings.crf にまとめる手作業が必要となります。
' -----



If vbCancel = MsgBox("スクリプトを開始します。" & vbNewLine & "SS2_TEXT.exe を実行しますか?", vbOkCancel) Then WScript.Quit

' CreateObject
Set oWs = CreateObject("WScript.Shell")
Set oFs = CreateObject("Scripting.FileSystemObject")

sSS2t = "SS2_TEXT.exe " ' 変換プログラム名
sExtJPN = ".txt" ' 変換前の日本語データを保存したファイルの拡張子
sExtSTR = ".STR" ' 変換後ファイルの拡張子
sJpConvFolder = "jp_converted" ' 変換後のファイルを保存するフォルダー名。このスクリプトと同階層に作成される

' スクリプトの場所をカレントディレクトリとして設定
oWs.CurrentDirectory = Left(WScript.ScriptFullName, (Len(WScript.ScriptFullName) - Len(WScript.ScriptName)))



' SS2_TEXT.exeの存在有無を確認
If Not(oFs.FileExists(sSS2t)) Then
  MsgBox sSS2t & "が必要です。スクリプトを終了します。"
  WScript.Quit
End If

' jp_convertedフォルダーが無ければ新規作成する
If Not(oFs.FolderExists(sJpConvFolder)) Then
  oFs.CreateFolder(sJpConvFolder)
End If



' フォルダー内の .txtのファイルを逐次 SS2_TEXT.exe へ渡していく
Set oFileColle = oFs.GetFolder(oWs.CurrentDirectory).Files ' ファイルコレクションの生成

For Each oFile in oFileColle ' ループ開始

  If LCase(Right(oFile.Name, Len(sExtJPN))) = sExtJPN Then ' 拡張子が.txtかどうか
	sConvdSTR = Left(oFile.Name, InStrRev(oFile.Name, ".") - 1 ) & sExtSTR ' 変換後の.STRファイル名を生成
	oWs.Run sSS2t & oFile.Name & " " & sConvdSTR, 7, TRUE ' SS2_TEXT.exeへ渡すコマンドラインを生成、実行
	
	If oFs.FileExists(sJpConvFolder & "\" & sConvdSTR) Then
	  oFs.DeleteFile(sJpConvFolder & "\" & sConvdSTR) ' jp_convertedフォルダーに古い変換後ファイルが存在するならば削除する
	End If
	
  End If
Next ' ループ終了

' ファイルの削除と移動の間に、少しだけウェイトを置く
' 次のMoveFile実行時にエラーが出る時(もしくは、全ての.STRファイルがjp_convertedフォルダーに移動しきらない場合)には
' ここの数値を大きくしてみる
WScript.Sleep(500)

' jp_convertedフォルダーに .STR ファイルを移動させる
oFs.MoveFile "*.STR", sJpConvFolder & "\"


MsgBox "スクリプトは全作業を終了しました。"
WScript.Quit