|
506) 特定の文字を置換する りすと 2002/07/25(木) 12:39 |
|
はじめまして、DOS初心者です。 どうしてもわからなくて質問させてもらいます。 文字列の中から、特定の文字を置換したいと思います。 そんなコマンドがあるか調べましたが見つけることができません。 どたなかアドバイスをいただけないでしょうか。 お願いします。 |
|
511) Re:特定の文字を置換する SYSOP 2002/07/26(金) 00:39 |
|
りすと さん >文字列の中から、特定の文字を置換したいと思います。 >そんなコマンドがあるか調べましたが見つけることができません。 文字列置換とひとくちにいっても、「"メモ帳"のように画面上で対話的に編集できるDOSプロンプト上のテキスト編集ツールはないか?」という意味合い と、たとえばバッチファイルなどからファイル名を指定して一気に済ませたい場合と、おおまかにはこの2つがあると思いますが、どちらでしょうか。 また、OSのバージョンも明記をお願いします。 YanaKen |
|
514) Re2:特定の文字を置換する りすと 2002/07/26(金) 10:06 |
|
YanaKen さん あいまいすぎましたね、すいません。 バッチファイルでやりたいと思っています。 かなり具体的に言いますと。。。 あるファイルを圧縮したいです。 その対象となるファイルは、リストファイルみたいなものにフルパスで書いてあります。 そのリストファイルを読み込んで圧縮することはできました。 けれど、圧縮されたファイルにつける名前で悩んでいます。 「c:\abc\123\efg.txt」というファイルを圧縮したとして、 「c_abc_123_efg.cab」といった感じのファイル名にするのが目的です。 いくつあるか分からない \ を _ に(ついでに : もですが)置換できればOKなんです。 OSはWindows2000 5.00.2195 Service Pack2 です。 なかなか無茶なのかもしれませんがよろしくお願いします。 |
|
515) Re3:特定の文字を置換する SYSOP 2002/07/26(金) 12:27 |
|
りすと さん >「c:\abc\123\efg.txt」というファイルを圧縮したとして、 >「c_abc_123_efg.cab」といった感じのファイル名にするのが目的です。 >いくつあるか分からない \ を _ に(ついでに : もですが)置換できればOKなんです。 それをバッチ処理でということでしたら、(edlinに編集命令をリダイレクトで送り込む、みたいな特殊なテクニックが思い浮かぶことは思い浮かびますが)一般論としては「標準コマンドの範囲内では不可能」といっていいと思います。 そういった用途向きのオンラインソフト(たとえば、UNIXの流れを引くsed)を利用するか、または、「ファイルから行ごとに文字列を読み込んで特定 の文字を探し出して置換」というのはプログラミング言語の世界では基本に属する処理なので、このさい前向きに自作に取り組む、というのも一つの選択肢だと思います。 YanaKen |
|
573) Re3:特定の文字を置換する ttt 2002/08/27(火) 20:21 |
|
>「c:\abc\123\efg.txt」というファイルを圧縮したとして、 >「c_abc_123_efg.cab」といった感じのファイル名にするのが目的です。 @set BDIR= @for /d %%i in (%1) do @set ADIR=%%~i @for /d %%i in (%1) do @set SDIR=%%~nxi @for /F "delims=\: tokens=1,*" %%i in ("%ADIR%") do @( @set BDIR=%%i @set ADIR=%%j ) :begin @for /F "delims=\: tokens=1,*" %%i in ("%ADIR%") do @( @set BDIR=%BDIR%_%%i @set ADIR=%%j ) @if "%ADIR%" NEQ "%SDIR%" goto begin @for /d %%i in (%1) do @set BDIR=%BDIR%_%%~ni.cab @echo %BDIR% pause といった長いものでよければ。OSはwindows2000で作りました。 |
|
579) Re3:特定の文字を置換する ttt 2002/08/30(金) 14:37 |
|
Windows2000なら set [変数]=%[置換対象文字列]:[検索文字]=[置換文字]% で置換できるようです。 |
|
580) Re4:特定の文字を置換する じゃく 2002/08/30(金) 14:56 |
|
tttさんこんにちは >Windows2000なら > >set [変数]=%[置換対象文字列]:[検索文字]=[置換文字]% set [変数]=%[置換対象変数]:[検索文字]=[置換文字]% ですね。一旦文字列を環境変数に入れないといけないようです。 |