アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記「test1.txt」のようなファイルがあります。
先頭から指定桁目に特定文字を挿入し、末尾から指定桁分を削除する。それを行単位に行い、最終行まで繰り返す。
といったコマンド(構文)についてご教授頂けないでしょうか?

例:
先頭から4桁目に特定文字(XXX)を挿入
末尾から3桁分の文字を削除

<test1.txt>
aaabbbcccddd
eeefffggghhh
・・・

<実行結果:test1.txt>
aaaXXXbbbccc
eeeXXXfffggg

宜しくお願いします。

A 回答 (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ができるのがわかると思います。
最終型を元ファイルにコピーするか、別名にするかは好きにしてください
    • good
    • 0
この回答へのお礼

yambejp様

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

お礼日時:2009/12/01 15:07

OSのバージョンは?


DOSコマンドにこだわる理由は何でしょうか?
MS-DOSを使っているのでしょうか?

標準のコマンドでは不可能なので、vbs なり、ほかのプログラムをインストールして使用してはいかがでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/01 11:57

DOSやWindowsのバッチ機能では無理です。


#1でも回答があるように、何らかのテキスト処理用プログラムをインストールする必要があります。

バッチではなくVB ScriptやWindows PowerShellならOSの標準機能で可能です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/01 11:47

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/01 11:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!