• ベストアンサー

DOSコマンドによるテキストファイル編集について

下記「test1.txt」のようなファイルがあります。 先頭から指定桁目に特定文字を挿入し、末尾から指定桁分を削除する。それを行単位に行い、最終行まで繰り返す。 といったコマンド(構文)についてご教授頂けないでしょうか? 例: 先頭から4桁目に特定文字(XXX)を挿入 末尾から3桁分の文字を削除 <test1.txt> aaabbbcccddd eeefffggghhh ・・・ <実行結果:test1.txt> aaaXXXbbbccc eeeXXXfffggg 宜しくお願いします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

だいぶ手をぬいてますが、こんな感じ ほんちゃんではエラー制御やオブジェクトの宣言、開放などきちんとしましょう //test.vbs Const ForReading = 1, ForWriting = 2 main sub main Set objArgs = WScript.Arguments if objArgs.count=0 Then Set sOut = WScript.StdOut sOut.writeLine "no data" sOut.close exit sub end if fileName=objArgs(0) Set fs = CreateObject("Scripting.FileSystemObject") tempName=fileName+".temp" Set tf1 = fs.OpenTextFile(fileName ,ForReading ) Set tf2 = fs.OpenTextFile(tempName ,ForWriting ,True) While Not tf1.AtEndOfLine x=tf1.ReadLine y=convertText(x) tf2.WriteLine(y) wend tf1.Close tf2.Close end sub function convertText(txt) line=Mid(txt,1,3) line=line + "XXX" line=line + Mid(txt,4) line=Mid(line,1,Len(line)-3) convertText = line end function これをコンソールで cscript test.vbs test.txt とすると、test.txt.tempができるのがわかると思います。 最終型を元ファイルにコピーするか、別名にするかは好きにしてください

yopppy
質問者

お礼

yambejp様 お世話になりました。無事にやりたいことができるようになりました。 本当にありがとうございます!!!!

その他の回答 (3)

  • junkUser
  • ベストアンサー率56% (218/384)
回答No.3

OSのバージョンは? DOSコマンドにこだわる理由は何でしょうか? MS-DOSを使っているのでしょうか? 標準のコマンドでは不可能なので、vbs なり、ほかのプログラムをインストールして使用してはいかがでしょうか。

yopppy
質問者

お礼

回答ありがとうございます。 Windows2003Serverになります。 DOSコマンドの理由ですが、今回のテキストファイルの編集後に 別サーバへコピーする動作(タスクで実行)が入っていますが、 ここがDOSコマンド(COPY)を使っており、ミックスできればと思いました。VBSを別途タスクに仕掛ければ済む話ですので、そちらでも大丈夫です。

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.2

DOSやWindowsのバッチ機能では無理です。 #1でも回答があるように、何らかのテキスト処理用プログラムをインストールする必要があります。 バッチではなくVB ScriptやWindows PowerShellならOSの標準機能で可能です。

yopppy
質問者

お礼

回答ありがとうございます。 編集したいテキストファイルはある時間帯に自動で飛んできますので、 WindowsタスクスケジューラにVBSを仕掛けて実行できればと思います。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

DOS版のsedやawkを入れるという選択肢はありますか?

yopppy
質問者

お礼

回答ありがとうございます。 Windows2003Server上で動作させますが、極力ユーティリティーのセットは避けたいと思っています。