プロが教える店舗&オフィスのセキュリティ対策術

質問させて下さい。

タイトルのままですが、ファイルの文字コードを、Shift_JisからUnicode(UTF-16LE)に変換してくれるフリーウェアを探しています。

メモ帳を使えば可能な事ですが、何百というファイルを処理したいので、専用のソフトがあれば…、と思っています。

できれば、複数のファイルのD&D→一括変換が出来るものがいいです。


ベクターで探したのですが、適当なものが見つかりませんでした…。

どうかよろしくお願いします。

A 回答 (4件)

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ご紹介下さったソフトは一度ためしたのですが、コマンドラインからしか使えないため、あまり時間の節約にならない感じでした…。

私にコマンドラインを活用する知識がないせいなのでしょうか…(現在はコマンドプロンプトにファイルを一個ずつD&Dして行なっています)。

お礼日時:2005/08/04 17:00

VBスクリプト経験ありますか?



Windows上で動くプログラムを書いて、DDで渡すと、コマンドを毎回書かないで実行できます。

サンプル書きますんで、可能だったら使ってみてください。
サンプルちょっとまってね^^;
    • good
    • 0

まず、#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
    • good
    • 0
この回答へのお礼

ここまでして頂いて、本当にありがとうございます!!!大変助かります!!!

早速、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番目の行でエラーが起こってしまいました。
エラーメッセージは、「指定したファイルが見つかりません」というものでした。


本当に申し訳ないのですが、お目を通して頂けたらとても嬉しいです…。

お礼日時:2005/08/04 19:29

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文を削除して実行したところ、
復活させておいてくださいね^^;


もし、それでも走らなかったら、変更箇所をおしえてください^^
    • good
    • 0
この回答へのお礼

素早くて的確なレス、本当にありがとうございます!

「変換後」というフォルダ名を、「変換したものを入れたいフォルダのフルパスに置き換えればいいのか…」と、大変な勘違いをしていました。

申し訳ありません!

全て元に戻したところ、無事に動きました!

大変助かりました。

1050YENさん本当にありがとうございました!

お礼日時:2005/08/04 19:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!