• ベストアンサー

指定したファイルの文字コードをShift_Jis→Unicodeに変換してくれるソフト(Windows)

質問させて下さい。 タイトルのままですが、ファイルの文字コードを、Shift_JisからUnicode(UTF-16LE)に変換してくれるフリーウェアを探しています。 メモ帳を使えば可能な事ですが、何百というファイルを処理したいので、専用のソフトがあれば…、と思っています。 できれば、複数のファイルのD&D→一括変換が出来るものがいいです。 ベクターで探したのですが、適当なものが見つかりませんでした…。 どうかよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

84行目ですよね 出力先フォルダを作成しようとして、コケてますね。 出力先は「strNewFileFolder」に指定されている場所です。 既存物では strNewFileFolder = strFolder & CONVERT_OUT となっているので、変換元ファイルの下にフォルダを作成しようとしています。 例. 変換前/C:\新しいフォルダ\テキストファイル.txt 変換後/C:\新しいフォルダ\変換後\テキストファイル.txt 元のプログラムが CONST CONVERT_OUT = "変換後\" となっている部分を CONST CONVERT_OUT = "C:\Program Files\s16s\" としたのですよね? 出力先をフルパス指定したのであれば strNewFileFolder = strFolder & CONVERT_OUT を改造して strNewFileFolder = CONVERT_OUT としてください。 >82~85行目までの、If文を削除して実行したところ、 復活させておいてくださいね^^; もし、それでも走らなかったら、変更箇所をおしえてください^^

garibar2
質問者

お礼

素早くて的確なレス、本当にありがとうございます! 「変換後」というフォルダ名を、「変換したものを入れたいフォルダのフルパスに置き換えればいいのか…」と、大変な勘違いをしていました。 申し訳ありません! 全て元に戻したところ、無事に動きました! 大変助かりました。 1050YENさん本当にありがとうございました!

その他の回答 (3)

回答No.3

まず、#1で挙げたプログラムが用意されていることが必須です。 その上で、以下の手順を行ってください。 手順1. 下に書かれている「Option Explicit」より下のプログラムをメモ帳などに張ってください。 手順2. 先頭の方にある CONST EXENAME_16_TO_S = "C:\16S.EXE" CONST EXENAME_S_TO_16 = "C:\S16.EXE" はExeのパスです。 環境に合わせて変更してください。 手順3. このサンプルはSJIS→Unicode用になっています。 Unicode→SJIS用したい場合は 「strHENKAN = EXENAME_S_TO_16」 の部分を 「strHENKAN = EXENAME_16_TO_S」 にしてあげてください。 手順4. ファイルを保存します。 「無題.txt」でも何でもファイル名は何でも良いです。 手順5. ファイルの拡張子を変更してあげてください。 「無題.txt」→「無題.vbs」 手順6. あとはファイルを無題.vbsへDDするだけで、変換対象ファイルが存在するフォルダに「変換後」フォルダが作成され、結果を得ることが出来ます。 -------------------------------------------------------------- Option Explicit CONST EXENAME_16_TO_S = "C:\16S.EXE" '← EXEが置いてある場所 for SJIS変換 環境に合わせて変更してください CONST EXENAME_S_TO_16 = "C:\S16.EXE" '← EXEが置いてある場所 for Uni変換 環境に合わせて変更してください CONST CONVERT_OUT = "変換後\" '← 変換後の出力先フォルダ '----------------------------------------------- Dim strHENKAN strHENKAN = EXENAME_S_TO_16 '← SJIS から Unicode変換を指定 'パラメータを取得して、メイン実行部を行う Dim objArgs Dim oShell Dim fsoObj 'オブジェクト生成 Set objArgs = WScript.Arguments Set oShell = CreateObject ("WSCript.shell") Set fsoObj = CreateObject("Scripting.FileSystemObject") 'メイン実行 Call MainProc(objArgs) 'オブジェクト開放 Set oShell = Nothing Set fsoObj = Nothing Set objArgs = Nothing '----------------------------------------------- '----------------------------------------------- 'メイン実行部 '----------------------------------------------- Sub MainProc(arg) Dim objParam 'パラメータループ For Each ObjParam in arg 'ファイルであるかをチェック If fsoObj.FileExists(objParam) Then '変換メイン実行 Call ConvertExec(objParam) End If Next End Sub '----------------------------------------------- '変換メイン '----------------------------------------------- Sub ConvertExec(inFileName) Dim fsoFile Dim strFolder Dim strName Dim strCmd Dim strNewFilePath Dim strNewFileFolder 'ファイルオブジェクト取得 Set fsoFile = fsoObj.GetFile(inFileName) 'ファイルオブジェクト取得 Set fsoFile = fsoObj.GetFile(inFileName) 'フォルダパスとファイルパスに分解 strFolder = fsoFile.ParentFolder 'フォルダ名 strName = fsoFile.Name 'ファイル名 'フォルダパス正規化 If (Right(strFolder,1) <> "\") Then strFolder = strFolder & "\" End If '出力先フォルダを指定(元のファイルの存在しているパスの下のCONVERT_OUTで指定してあるフォルダ) strNewFileFolder = strFolder & CONVERT_OUT '出力先フォルダが存在しなければ作成 If Not fsoObj.FolderExists(strNewFileFolder) Then Call fsoObj.CreateFolder(strNewFileFolder) End If '出力ファイル名を設定(元のファイルと名前は一緒) strNewFilePath = strNewFileFolder & strName '変換コマンド文字列を作成 strCmd = strHENKAN & " " & Chr(34) & inFileName & Chr(34) & " " & Chr(34) & strNewFilePath & Chr(34) '変換実行 oShell.run(strCmd) End sub

garibar2
質問者

お礼

ここまでして頂いて、本当にありがとうございます!!!大変助かります!!! 早速、Option Explicit以下の行をvbsファイルとしてD&Dしてみたのですが、84行目にエラーが出てしまってうまく変換できません。私がどこか間違ってしまってますでしょうか? 84行目とは、 Call fsoObj.CreateFolder(strNewFileFolder) という所なのですが…。 以下のようなエラーメッセージです。 ------------------------------------------ 行:   84 文字:  1 エラー: ファイルの名前または数が不正です。 コード: 800A0034 ソース: Microsoft VBSprict 実行時エラー ------------------------------------------ 最初に代入したCONST CONVERT_OUTには、 exeファイルと同じ場所(C:\Program Files\s16s\)を指定しています。 試しに、82~85行目までの、If文を削除して実行したところ、今度は、 oShell.run(strCmd) という最後から2番目の行でエラーが起こってしまいました。 エラーメッセージは、「指定したファイルが見つかりません」というものでした。 本当に申し訳ないのですが、お目を通して頂けたらとても嬉しいです…。

回答No.2

VBスクリプト経験ありますか? Windows上で動くプログラムを書いて、DDで渡すと、コマンドを毎回書かないで実行できます。 サンプル書きますんで、可能だったら使ってみてください。 サンプルちょっとまってね^^;

回答No.1
garibar2
質問者

お礼

ご回答ありがとうございます。 ご紹介下さったソフトは一度ためしたのですが、コマンドラインからしか使えないため、あまり時間の節約にならない感じでした…。 私にコマンドラインを活用する知識がないせいなのでしょうか…(現在はコマンドプロンプトにファイルを一個ずつD&Dして行なっています)。

関連するQ&A