こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

BATファイルについて

BATファイルについて教えてください。
現在エクセルのVBAでテキストファイルから読み込んだデータを一行づつ解析し条件文でそれぞれ決められた書式のテキストファイルに書き直して新たなテキストファイルを作成するというプログラムを作成して使っています。
この機能をエクセルのVBAではなくBATファイルのようなインタープリンターを介さないプログラムができないかと悩んでいます。
BATファイルで上記の処理が可能か、または作成方法など教えていただけると助かります。
どなたかご存知の方教えてください。

投稿日時 - 2013-02-20 09:46:31

QNo.7954848

困ってます

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

> BATファイルのようなインタープリンターを介さないプログラム

ここはちょっと認識が違うと思います。

BAT自体がインタプリタ(プリンターではありません)みたいなものです。
純粋にBATだけと言えるのは「内部コマンド」と呼ばれるコマンドだけです。他は外部のプログラムを利用します。

例えば、解析には、文字列検索が必要でしょう。
検索には、findstrというコマンドがありますが、これは、findstr.exeという外部プログラムを利用します。
findstr.exeを削除してしまえば、batだけでは実行できなくなります。



やりたいのは、わざわざExcelのような巨大なプログラムを立ち上げなくても、その処理をBATでしたい、ということではないでしょうか?

「内容によってはできなくはないが、いろいろと貧弱なBATでは難しいだろう」というのが私の回答です。
Excelみたいに巨大ではない、他のインタプリタ等を使うのが便利だと思います。

○WSHを使う
http://ja.wikipedia.org/wiki/Windows_Script_Host
とくに、VBScriptはVBAにちょっと似ているので、変換が比較的楽と思われる
http://ja.wikipedia.org/wiki/VBScript

○ awk,perl,ruby,python等の言語を使う
これらは、テキスト処理に優れている。資料やサンプルも多い。
テキスト処理は環境にほとんど依存しないので、Linux用等に書かれたスクリプトでもほとんど変更無く動く。
インストールする必要があるので、インストールされていないPCで実行するには工夫が必要。

投稿日時 - 2013-02-20 11:03:41

お礼

回答ありがとうございます。
BATファイルでは難しいようですね。
あまりBATファイルの中身を理解せず質問してしまったようですね。
ただ、WSHなる言語があることがわかり大変ためになりました。
少しWSHを勉強してみたいと思います。

投稿日時 - 2013-02-20 19:16:08

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

素朴なbatファイルでは「解析し」「決められた書式」というのができないかもしれないし,できるかもしれない。その複雑さによります。でもbatファイルから外部ツールを呼び出す形にすればなんでもできますね。

投稿日時 - 2013-02-20 10:03:26

補足

回答ありがとうございます。
複雑さを説明しますと、現在エクセルのマクロで以下のVBAを使っています。

ただし、これは前段階でテキストファイルからエクセルにインポートするという作業が発生するため、この部分の効率化とインポート時のトラブル回避が目的です。

具体的には
  A = Cells(n, 1)
Intime = Cells(n, 2)
OutTime = Cells(n, 3)
text = Cells(n, 4)
テキストファイルからある関数にデータの読み込み


Open "I:\Data.txt" For Append As #1
If A = "" Then
Print #1, Chr(9); text
Else
Print #1, Format(No, "@"); Chr(9); Intime; "/"; OutTime; Chr(9); text
'Print #1, Str(No); Chr(9); Intime; "/"; OutTime; Chr(9); text
No = No + 1
End If
Close #1
の用に新規のテキストファイルをOPENして、最初に読み込んだ関数をみてIF文で分岐、先程開いたテキストファイルにPRINT#1のように書き出していくといものです。

何かよい方法がありましたら教えてください。

よろしくお願いします。

以下VBAマクロ全文です。--------------------------




Sub Macro1()
Dim A As String
Dim Intime As String
Dim OutTime As String
Dim text As String


No = 1

Open "I:\Data.txt" For Append As #1
Print #1, "Lambda字幕V4 DF0+0 Scene" & Chr(34) & "和文標準" & Chr(34)
Print #1, Chr(13)
Close #1
For n = 1 To 2000
A = Cells(n, 1)
Intime = Cells(n, 2)
OutTime = Cells(n, 3)
text = Cells(n, 4)


Open "I:\Data.txt" For Append As #1
If A = "" Then
Print #1, Chr(9); text
Else
Print #1, Format(No, "@"); Chr(9); Intime; "/"; OutTime; Chr(9); text
'Print #1, Str(No); Chr(9); Intime; "/"; OutTime; Chr(9); text
No = No + 1
End If
Close #1
Next

End Sub

投稿日時 - 2013-02-20 11:02:26

あなたにオススメの質問