フォルダー中のCSVファイルを一括して変換する

フォルダー中のCSVファイルを規則に沿って一括変換する方法を紹介します。

変換元のCSVファイルを「C:\source」に配置します。
このフォルダー中の拡張子がCSVのファイルを変換します。

変換されたCSVファイルを保存するフォルダーを「C:\target」に作成します。 変換されたCSVファイルが元のファイル名と同じファイル名でこのフォルダーに保存されます。

CSVファイルを変換する設定をnextCSVで作成します。
作成したnextCSVのプロジェクトファイルは、「C:\source\sample.nxc」に保存します。
変換設定については、nextCSVのホームページをご覧ください。

次のVBScriptのコードをファイル(C:\source\exec.vbs)に保存します。

Option Explicit
Dim source, target, exepath, project, fso, shell, cmdline, folder, file

'CSVファイルのあるフォルダー
source = "C:\source\"
'作成したCSVファイルを保存するフォルダー
target = "C:\target\"
'nextCSV2.exeの場所
exepath = "D:\Program Files\nextCSV2\nextCSV2.exe"
'nextCSV2のプロジェクトファイル(.nxcファイル)のパス
project= "C:\source\sample.nxc"

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("WScript.Shell")
Set folder = fso.GetFolder(source)
For Each file In folder.Files
  'ファイルの拡張子がcsvのとき
  If LCase(fso.GetExtensionName(file)) = "csv" Then
    cmdline = MakeCommandLine(target, exepath, project, file)
    WScript.Echo cmdline
    shell.Run cmdline, 1, True
  End If
Next

Set fso = Nothing
Set shell = Nothing

'nextCSV2用のコマンドラインを作成する
Function MakeCommandLine(target, exepath, project, file)
  MakeCommandLine = """" & exepath & """ -a """ & project & """ """ & _
    target & file.Name & """ 0 0 ""-f=" & file & """"
End Function

ファイルの構成は次のようになります。

C:\
 ├source/ 変換元のCSVファイルを配置するフォルダー
 │├exec.vbs 変換処理を実行するVBScript
 │├~.csv 変換するCSVファイル
 │├~.csv 変換するCSVファイル
 │├~.csv 変換するCSVファイル
 │└sample.nxc 変換規則を設定したnextCSVのプロジェクトファイル
 └target/ 変換されたCSVファイルを保存するフォルダー

保存したファイル実行すると、フォルダー中のCSVファイルを順次nextCSVが変換していきます。

■2011年7月29日 追記

フォルダー内のファイルに対してコマンドラインを実行するソフトウェア「DirCommand フォルダー内ファイル一括処理ソフト」を公開しました。

DirCommand フォルダー内ファイル一括処理ソフト

DirCommand フォルダー内ファイル一括処理ソフト」を使うとVBScriptを使わなくても、上の処理と同じことが簡単にできます。

ぜひお試しください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です