• ベストアンサー

BATファイルについて

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

  • homma
  • お礼率84% (744/884)

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> 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で実行するには工夫が必要。

homma
質問者

お礼

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

その他の回答 (1)

  • f272
  • ベストアンサー率46% (8010/17118)
回答No.1

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

homma
質問者

補足

回答ありがとうございます。 複雑さを説明しますと、現在エクセルのマクロで以下の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

関連するQ&A

  • *.bat ファイルの作り方

    初歩的な質問ですが、よろしくお願いします。 例えば、EXCELを起動するときに、 スタート→すべてのプログラム→EXCEL とたどっています。 これを変更して、batファイルを作成して起動したいと思っています。 batファイルを作成して、以下のように編集しても起動しません。 C:\Program Files\Microsoft Office\Office10\EXCEL.EXE どのように書けば良いのか、分かる方よろしくお願いします。

  • batファイルに関して

    教えて下さい。 batファイルを作成し、実行しようと考えていますが、命令文 が複数あった場合、1つのbatファイルに記載する事は可能でしょうか? 例えば、  copy と pushd 等を一度に行いたい。 よろしくお願いします。

  • batファイルについてです

    まずbatファイルというのは何なのでしょうか? 僕の認識だとコマンドプロンプトでできることをいちいち打ち込まずに機械的にするものというイメージなのですが大体あってるでしょうか? 次にbatファイルを利用してテキスト部分を操作することはできるでしょうか? 僕がやりたいのはたとえば 「playlist.m3u」の中身の \Documents and Settings\user\My Documents~\aa.mp3 \Documents and Settings\user\My Documents~\bb.mp3 \Documents and Settings\user\My Documents~\cc.mp3 「\Documents and Settings\user\My Documents~\」の部分を消した「playlist編集後.m3u」みたいなファイルを新たに作ったりとかすることです またそういったbatファイルの作成はbatファイルやコマンドプロンプトなどにあまり詳しくなくてもできるでしょうか? 一応僕はHTML、CSSくらいならあるていどできif文やfor文の使いかたは大体分かります

  • batファイルで、引数のファイルリストを作りたい。

    あるbatファイルを作成しようとしています。 目的は、複数のファイルを選択して、batファイルにドラッグすると、そのパスをテキストファイルに書き込んでほしいのです。 for文を使おうと思ったのですが、以下の内容だとうまくいきません。 type NUL > "./test.txt" for %%i in (%*) do echo %%i >> "./test.txt" 空のファイルは作成されるのですが、ファイル名は記録されません。 何か方法があれば教えていただけないでしょうか?

  • batファイルについて

    コマンドプロンプト(batファイル)で同一のフォルダにある 一定の条件のファイル(内容はテキストファイル)を一つのファイルにまとめる場合 以下のコマンドで出来ます TYPE *2015-04* > ../201504.txt サブフォルダに格納されている同条件の多数のファイルを一つにまとめる場合 どのような内容にすればよいでしょうか?

  • エクセルVBAよりBATファイルを起動する方法。

    エクセルVBAよりBATファイルを起動する方法を教えてください。 現在下記の様な内容で作ってみましたがうまくいきません。 ***VBA側*** Private Sub CommandButton5_Click() Dim myID As String myID = Shell("D:\test.bat", vbMaximizedFocus) End Sub ***BATファイル側*** xcopy "d:\test1" "d:\test2"/I/Y エクセル2003で実行してみましたがうまくいきません。BATファイルは起動しているようなのですが、BATファイルの処理がうまくいかなくて困っています。(ちなみにBATファイル単体をダブルクリックで実行すると問題ないのですが…) 同じ内容をエクセル2007で実行するとうまくいきました。(ちなみにOSはVISTA) 2003(ちなみにOSはxp)で上手くいかないのがどうしてかわかりません。 どうか詳しい方ご教授ください。よろしくお願いいたします。

  • batコマンド ファイルの一覧

    batファイルを使用して、指定したフォルダの中にあるテキストファイルの一覧を「一覧.txt」というファイルを新規作成して、そのファイル内に記載したいのですが何か良い方法はないでしょうか? ご教示お願いします。 (例) フォルダAの中にテキストA、テキストB、テキストCがある。 batファイルを実行すると同フォルダ内に「一覧.txt」が作成され、ファイルを開くと テキストA テキストB テキストC と記載されている。

  • batファイル処理でのテキストファイルの内容変更

    batファイル処理のみにてテキストファイルの内容を変更する事は可能でしょうか。 例えば aaa=1111 bbb=2222 ccc=3333 ddd=4444 という内容のテキストファイルが存在し、batファイルにて aaa=1111 bbb=2222 ccc=5555 ddd=4444 というように、指定行の内容を変更させたいのですが、この処理をbatファイルのみで行う事は可能でしょうか。 宜しくお願いします。

  • batファイル処理でのテキストファイルの内容を編集

    batファイル処理のみにてテキストファイルの内容を編集する事は可能でしょうか。 例えば aaa=0 bbb=0 ccc=0 ddd=0 という内容のテキストファイルが存在し、batファイルにて aaa=0 bbb=1 ccc=1 ddd=0 というように、指定行の内容を変更させたいのですが、この処理をbatファイルのみで行う事は可能でしょうか。 宜しくお願いします。

  • bat ファイルでフォルダ作成&移動

    batファイルで「フォルダを作成し、作成したフォルダに入る」という処理を 自動的にしたいです。 どのようなbatファイルを作ったらよいでしょうか? まったくの初心者なのでよくわかりません。 フォルダ名はDOS上できいてもらってもいいし、その都度batファイルに書き込んでもいいですが、 楽にできるほうがいいです。

専門家に質問してみよう