• 締切済み

バッチファイルでテキストファイル内の特定の文字列をコンピュータ名に置換

バッチファイルでテキストファイル内の特定の文字列をコンピュータ名に置換したい バッチファイルの記述方法について教えて下さい。 テキストファイル内に特定の文字列が存在していた場合、その文字列をバッチファイルを実行するPCのコンピュータ名で置換するにはどのように記述したら良いでしょうか。 なおPCはWindowsXPを使用しています。

noname#244834
noname#244834

みんなの回答

  • petertalk
  • ベストアンサー率69% (152/219)
回答No.1

文字列置換は、バッチでは難しいので、 DOS用のsedをインストールする前提で書きます。 記述はOSに依存しないし、簡易なコマンドなので最適だと思います。 http://www.vector.co.jp/soft/dos/util/se000880.html テキストファイル、in.txt があったとします。 [in.txt] @echo off ping hostname この中の hostname という文字列を実際のホスト名で置き換え、 out.txt に書き出すバッチは、以下になります。 @echo off for /F %%h in ('hostname') do set host=%%h sed -e s/hostname/%host%/g <in.txt >out.txt これを実行すると、以下のファイルが作成されます。 [out.txt] @echo off ping winxp001(実際のファイル名)

関連するQ&A

  • テキストファイルの特定行、特定列に文字を挿入

    テキストファイルがあるとします。 ある特定の行、特定の列に文字を挿入したいです。 又は、あらかじめ、特定の文字を書いておき、 置換により文字を置き換える方法でも良いです。 これを、コマンドを使用し、batファイルで自動的に 実行したいです。 どのような方法があるでしょう?

  • 置換をバッチファイルで実行

    あるテキストファイルの中の文字列例えば「ABC」を「DEF」に置換する操作をバッチファイルで実行するにはどうすれば良いのでしょうか?

  • バッチファイルでファイル名に文字列を挿入したい。

    フォルダにあるファイル全てに対して、ファイル名の先頭に文字列を挿入するバッチファイルを作っています。 対象のファイルは、主にエクセル、ワード、パワーポイント、PDFですが、ファイルの種類に関係なく、全てのファイルに対して、ファイル名の先頭に文字列を挿入したいです。 @echo off for %%i in (*) do ren "%%i" "【文字列】%%i" pause として文字列の挿入自体はできました。 しかし、このファイルを2回実行すると、ファイル名の先頭に【文字列】【文字列】と重複して挿入されてしまうので、すでに挿入済みのファイルに対しては実行しないようにしたいのですが、うまくいきません。 また、サブフォルダ内にあるファイルに対しても同様の処理を適用したいです。 どのように記述すればよいでしょうか。 リネームソフトを使えればよいのですが、フリーソフト等はインストールできない環境ですので、できればバッチファイルを記述して対応したいのです。 OSはウインドウズ7です。

  • ファイル名からテキスト内文字列の置換

    フォルダ内に tokyo.txt、nagoya.txt、osaka.txt… といったファイル名のテキストファイルがあり そのテキストファイルの中に 地名リンクという文字列があります。 この地名リンクという文字列を各々のファイル名 tokyo.txt、nagoya.txt、osaka.txt…(できれば.txtなしのtokyo,nagoya,osaka) に一括置換したいのですが、何かいい方法はありませんか。

  • ファイル内の文字列を置換

    掲示板利用させていただきます。 現在、ファイル内の特定の文字列を置換し、 保存する方法を探しています。 できればスクリプト言語を利用したいと考えています。 sedコマンドを使用して文字列置換を行ったのですが 置換前と置換後のファイルで 文字コードと改行コードが変わってしまうのでダメでした; 「ファイル内の特定の文字列を任意の文字列に置換し、置換前と置換後で改行コードと文字コードを変えない方法」 をご存知の方、ご教示ください。 bash,perl,javaのどれでも結構です。 よろしくおねがいします。

  • 多数のテキストファイルからの文字列の取り出し

    いま、わたしが持っているヴィジュアルベーシックは VB6.0です。PCはノートで、OSはXPです。 課題: あるフォルダーに1000くらいのテキストファイルがあって、 その各テキストファイルから たとえば、「「不特定長さの文字列1」」・・・・・・・・((不特定長さの文字列2)) の不特定長さの文字列1と不特定長さの文字列2を とりだし、 それをファイル名「まとめ表」というテキストファイルに ファイル名    文字列1   文字列2 ファイル1   あいうえお  かきくけこ ファイル2   さしすせそ  たちつてと  ・         ・        ・  ・         ・        ・ のように書き込むというプログラムを作成したいのですが、 できるでしょうか? できるとすると、 プログラムの およその考え方と 使用する命令語はどのようなものになりますか? ご回答をおまちしております。 よろしくおねがいいたしますm(__)m

  • テキストファイル中の文字列の置換

    読み込んだテキストファイルに中にある文字を別の文字に置換後、置換したファイルを再度保存したいと考えています。 どのようにすれば良いのでしょうか? VB6を使用しています。 宜しくお願いします。

  • テキスト置換ソフトで、特定の文字列が●個出てくるごとに置換できるもの知りませんか?

    以下のような機能をもつ テキストファイルの置換ソフトを探しています。 特定の文字列が●個出てくるごとに、 その●個目の部分だけを置換する機能です。 たとえば、 abc abc abc abc abc abc abc abc という文字列があるとして、 手動ではなく一括で以下のように置換をしたいのです。 abc ABC abc ABC abc ABC abc ABC この例では、abcが2つ登場するごとに、ABCという文字列に置換されていますね。このように特定の文字列(この例ではabc)が●個出てくるごとに、その●個目の部分だけを置換するというような機能を持つ(できれば)フリーソフトなどをご紹介いただければありがたいです。 秀丸エディタなどのテキストエディタでは、おそらくできないと思うのですが、もしできるのであれば、そのやり方を教えていただいても構いません。 よろしくお願いいたします。

  • バッチファイルで文字列を順番問わずマッチさせたい

    バッチファイルで、2個以上の文字列を順番問わずマッチさせたいと考えています。 例えば、 「111 222 333 444 555 666 777」 という内容のテキストファイルがあったとして、 sedコマンドを使って 「222」と「444」と「666」が この順番で含まれている行を置換したい場合、 sed -e "s/.*222.*444.*666.*/置換後の文字列/" in.txt > out.txt とすれば、問題なく置換されると思います。 しかし、上記の例では、 「777 666 555 444 333 222 111」 という内容のテキストファイルは置換されません。 文字列の順番を問わず、 「222」と「444」と「666」が含まれている行ならば、 その行を置換する、といった事は出来ないでしょうか。 sedコマンド以外でも構いませんので、何かいい方法をご存知の方がおられましたらお教え頂けないでしょうか。

  • 【コマンドプロンプト】テキストファイル内の文字列置換

    こんにちは。 コマンドプロンプトのバッチファイルでテキストファイル内の文字列の置換を行いたいと考えております。 例えば以下のような内容があった場合、 --開始-- ABCDEFG1111 ABCDEFG ABCDEFG1111 HIJKLMN --終了-- バッチファイル処理結果として 1111 ABCDEFG 1111 HIJKLMN という結果を別ファイルに出力したいのです。 制限としては、sed,awkなどのwindows上で稼動するツールがあるようですが それらは使用できません。 どなたかご存知の方教えていただけないでしょうか よろしくお願い致します。