そのファイルの中身(テキスト)を、コンソールからバッチ処理で変更したいのですが・・・
abcdefg(任意の文字列)
oawiufjoei
hijklmnd
opqrstudfs
abcdefg
dfnvuoinfi
poiuyt
dsfljgpwe
と、いうような状態で、行頭に0を入れて行くとか、4文字目を4と置き換えとか、行末にZを追記とかどうやればいいのでしょうか?
そのバッチを配布すればどのWindowsパソコンから、どんな素人でも「〜.batをダブルクリックしてください。」と説明するだけで出来るようにしたいんです。
バッチファイルでファイルの中身を操作、というのは、ほぼ無理だと思ってよいです。
その代わりとしてよく使われるのが VBS(VBScript)です。
中身は VisualBasic のコードをテキストファイルにして拡張子を
「.vbs」とすれば、ダブルクリックで実行できます。
http://e-words.jp/w/VBScript.html
VBScriptとは 【Visual Basic Script】 - 意味・解説 : IT用語辞典
厳密に言うと、Windows Scripting Host という機能で、VBS という
スクリプト処理をサポートしている、という位置付けになります。
urlダミーです
考え方としては
実作業(テキストを編集する)は
何でもいいです(vbs,エクセルマクロ)
で、それを起動させるバッチファイルを
用意してそれを皆さんに配布すればいいと思います
vbsを例にとると、
copy サーバ側のファイルパス コピーしてきたファイルパス
cscript コピーしてきたファイルパス
をbatファイルに記述することで宜しいです
この方式のいいとこは
サーバからコピーしてクライアントで起動するのでプログラムの中身を変更しても再配布の必要がないことです
ふむふむ。
RetroEngine: sed アーカイブ
既に書かれてるように batファイル単独では無理です。
もっとも vbs 等の汎用言語で処理するのは面倒&余計なスキルが必要ですが、テキスト処理に限定するなら、URL に解説のあるSED なんかが良いと思います。
URLのページにもDOS用のSEDへのリンクがありますが、フリーソフトですので bat と一緒に渡せば目的は達せられると思います。
SED もちょっと難しい面もありますが、慣れれば便利ですよ。がんばってください(^^ゞ
これ薦められているんですが、やっぱこれいいのでしょうか?
http://www.vector.co.jp/soft/dos/util/se000208.html
jgawk MSDOS用実行形式(MS-DOS / ユーティリティ)
行編集するならば、フリーウェアの力を借りたり、自分でWSH/VBSを組まないと無理ですよ
比較的楽な方法がこのソフトを併用する方法です awkというUNIXのScript言語と互換性があります
このソフトをC:¥Windowsなどに入れておいて貰えば、「指定したファイルを同じフォルダに入れて、〜.batをダブルクリックして下さい」で、何でもできるようになります
使い方です
ちょっと作ってみました
1. test.txtファイルのそれぞれの行の先頭に 0を入れるバッチファイル(画面に出力)
jgawk ’BEGIN{FS=””;RS=”¥n”} {printf(”0%s¥n”,$1)}’ < test.txt
--------------
2.test.txtの行ごとに4文字目だけ”4”と置換するバッチファイル(画面に出力)
jgawk ’BEGIN{FS=””;RS=”¥n”} {printf(”%s4%s¥n”,substr($1,1,3),substr($1,5,999))}’ < test.txt
--------------
3.test.txtの行末にZを追加してtest2.txt二出力する バッチファイル
jgawk ’BEGIN{FS=””;RS=”¥n”} {printf(”%sZ¥n”,$1)}’ < test.txt >test2.txt
”や’が全角になってるので注意
ここで気をつけるのはBATファイル中のScriptの%は %%にしないと正常に動かないことです
サンプル例です
これは
同じフォルダにあるTEST.TXTを5文字目までを小文字にそれ以降を大文字に変換してTEST2.TXTに出力します
おお、なるほどなるほど。
http://d.hatena.ne.jp/garyo/20040824#p8
恋文 - ジャンク☆ニュース 臥龍
URLの場所にスクリプトを書いておきましたので見てください。
ダイアリで使える「||>>」が人力検索でも使えるといいのですが……
拝見しました、ありがとうございます。
みなさんどうもお手数かけました。
んー、無理っぽいか。