• 締切済み

ExcelVBA バッチファイル編集

ExcelVBAで再現したい事を検索しましたが望む回答が無かったので質問させていただきます。 実行したいことは、スタートアップにある 【MS-DOSバッチファイル】を裏側?で編集(テキスト)で開き, テキスト内の一部を完全一致で置換を行いたいと考えております。 このバッチファイルを編集して完全一致で置換するところを どのようにコードを記載すればいいか全く分りません。 また置換後は上書き保存を行い【バッチファイル】を実行したいと考えています。 一応流れとしては実行初めに【置換したい文字】【置換後の文字】は退避させております。 正しいか分りませんが、バッチファイルも以下のように指定しました。 ChDrive "C" ChDir "C:Documents and Settings" OpenFileName = Application.GetOpenFilename("batファイル,*.bat") 以上、簡単な事かもしれませんが知恵を貸していただければと思います。

みんなの回答

回答No.1

Const ForReading = 1 Const ForWriting = 2 Dim findText As String Dim repText As String findText = "aaaaa" ' 置換対象文字列 repText = "bbbbb" ' 置換後文字列 Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim ts As Object Set ts = fso.OpenTextFile("E:\hoge.bat", ForReading, False) Dim txt As String txt = ts.ReadAll ts.Close txt = Replace(txt, findText, repText) Set ts = fso.OpenTextFile("E:\hoge.bat", ForWriting, False) ts.Write (txt) ts.Close とか

関連するQ&A

  • バッチえファイルを編集するには??

    こんばんは。 初めて掲載します。 バッチファイルで、複数のあるファイルの中身の特定の文字列を一括編集したと思っているのですが、どのようにコマンドを組めばいいのでしょうか? コマンド、バッチは初めてなのでどのように組めばいいのか是非ともご教授願います。 例として、バッチを実行すると、 C:\temp\の下にtest1.xmlとtest2.xmlがあります。 バッチファイルを実行すると、その2つのファイルの中身のある特定の文字を編集("AAA"という文字列を"BBB"に)して保存する。 というような処理を行いたいです。

  • バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。

    バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。 バッチファイルでほかのバッチファイルを呼び出した後の処理で困っています。 どうぞ教えてください。 「A.bat」というバッチファイルを実行すると、「1.bat」というバッチファイルを 実行させ、「1.bat」の実行結果によって、処理を分岐させたいと考えています。 「1.bat」をcallで呼び出し、実行はできたのですが、「1.bat」は最後にエンタキーを 押さないと終了しないようになっています。そのため、「エンターキーを押して終了させて ください」というメッセージが出たままの画面で終わってしまい、「A.bat」に帰ってくることが できません。 「1.bat」は中身を扱えないようにしてあるバッチファイルなので、こちらでエンターキーを 押さずに終了させるようにはできません。何かいい方法はないでしょうか?

  • バッチでiniファイルの編集

    バッチプログラムでiniファイルの編集をしたいのですが、 調べてはいるのですが、初心者の為困っています。 やりたいこと: 特定の文字列を見つけたら置換する 例 iniファイルの内容 ~~~~~~~ abcdef=789 123456=789 ~~~~~~~ 「789」を「xyz」に置換したい OS:Win2k この場合、どのようなコマンドを使用して 編集すれば良いのでしょうか? 宜しくお願い致します。

  • バッチファイルの作成

    お世話になっております。 バッチファイルの作成方法について、只今勉強中です。 現在、毎日行われている作業をバッチファイルで自動化が出来ないか検討しておりますが、バッチファイルの編集に苦戦していて困っております・・・ ---実行したい事--- 0.以下、作業の流れをコマンドプロンプト上で表示する。 1.C:\ツール\batというフォルダに移動する。 2.batフォルダに新しく「file」というフォルダを作成 3.batフォルダ内には「bat_YYYY/MM/DD.txt」という日付のテキストがあり、該当する日付のテキストをコピーしてfileフォルダへ貼り付ける。 4.fileフォルダへ移動する。 ---終了--- 手順を全部書いてしまっているのですが、途中まではバッチファイルの編集をする事が出来ました。しかし、正解しているか不安です。 ご教授の程、宜しく御願い致します。

  • バッチファイルの修正箇所を教えてください。

    バッチファイルで複数ファイル同時置換したいのですが、置換文字がURLの場合どうすればいいのでしょうか? 以下のバッチファイルを作って、mfindで同時置換したいのですがうまくいきません。 URLの部分に「/」の文字があるので、これが原因だと思うのですが・・・・。 どなたか修正をお願いします。 同時置換.bat mfind /W "/ここにURLを入れる/http://www.yahoo.co.jp//g" "ファイル1.txt" mfind /W "/ここにURLを入れる/http://www.google.co.jp//g" "ファイル2.txt"

  • バッチファイルを1個だけしか起動しないようにしたい

    エクスプローラー上から バッチファイル(test.bat)を ダブルクリックしてバッチファイルを実行しています。 通常はコマンドプロンプトが1個だけ表示されて、 バッチファイルが実行して実行が終了すると コマンドプロンプトも閉じられます。 しかし、時々、 コマンドプロンプトが2個表示されることがあります。 つまり、ダブルクリックが、 1回ではなく2回実行されたと誤認識されて、 同じバッチファイル(test.bat)が 2つ起動してしまったと思われます。 当然、その後の処理はおかしくなります。 (バッチファイル(test.bat)の中に 何らかのコードを追加するなどして) 必ず1個だけしか起動しないようにすることは、 できないでしょうか。 (Windows10)

  • 1つ下のファイルをコピーするバッチファイル

    コマンドプロンプトで実行するバッチファイル(x.bat)で C:\Aというフォルダのさらに1つ下のフォルダ (このフォルダは1つのみで名前は毎回変化します) の中にあるc.mpgというファイルを D:\Bフォルダにコピーするバッチファイルを 作りたいのですがどのように記述すればよいのでしょうか。 例えば、C:\A\data_20120922195626というフォルダ (data_20120922195626というフォルダ名は任意の名前ですが C:\Aフォルダの中にはこのフォルダ1つしかありません) の中に\c.mpgというファイルがあるとします。 バッチファイル x.bat を実行すると D:\Bフォルダにc.mpgをコピーしたいのです。 なお、data_20120922195626というフォルダの名前は バッチファイルを実行する時には毎回異っていますが バッチファイル実行中は変化しません。 VBscriptやwshなどは使わずWindosXPの標準DOS機能のみで お願いします。(WindosXP SP3)

  • バッチファイルについて

    バッチファイル(.bat)について不明な点が ありますので、詳しく方ご教授お願い致します。 コマンドプロンプトを開き、対象のバッチファイルを ドラッグアンドドロップし、実行すると正常通りの結果が 得られました。 ただ、バッチファイルをダブルクリックし、実行すると 実行されません。 原因を詳しい方、ご教授お願い致します。

  • バッチファイルでnetstat

    バッチファイルでnetstatの結果を表示したかったのですが 表示されません。 何故かループしてしまいます。 test.bat netstat 実行すると C:\test.bat>netstat C:\test.bat>netstat C:\test.bat>netstat ・・・・ となります。 環境はWindows XP SP3です。 ループせずに通常の出力を得る方法となぜこうなってしまうのかを教えていただけないでしょうか?

  • 【初心者】バッチファイルの作成方法について

    Windowsバッチファイルの作成方法について質問させて下さい。 以下の処理を行うバッチファイルの作成を考えています。 ・C:\Program Files\Microsoft Visual Studio 8\VCへ移動 ・上記フォルダ内にある vcvarsall.batファイルを実行 ・C:\Program Files\Microsoft Platform SDKへ移動 ・上記フォルダ内にある SetEnv.cmdファイルを実行 ・Cドライブ直下(C:\)へ移動 目的としては、「Microsoft Visual C++2005」の環境設定ファイルを バッチファイルにて一括実行することです。 実際に自分で作成したバッチファイル(setenv.bat)の内容は 以下のとおりです。 ---------------------------------------------------------- @echo off echo setenv.batを実行します cd C:\Program Files\Microsoft Visual Studio 8\VC echo vcvarsall.batを実行して環境設定をおこないます vcvarsall.bat cd C:\Program Files\Microsoft Platform SDK echo SetEnv.cmdを実行して環境設定をおこないます SetEnv.cmd cd C:\ ---------------------------------------------------------- [実行結果] C:\>setenv.bat setenv.batを実行します vcvarsall.batを実行して環境変数を設定します Setting environment for using Microsoft Visual Studio 2005 x86 tools. 実行結果のとおり、setenv.batの実行までしか処理が行われず、 vcvasall.batは実行されません。 原因と対処方法について、どなたか教えて頂けませんでしょうか?