
タイトルの通りなのですが、バッチファイルで置換を行う設定をしているのですが、正規表現とかでも指定できればと思うのですが、色々と試してみるのですがうまくいかず、アドバイス頂けないでしょうか?
具体的には、以下の感じで回しているのですが、この定義だと関係のない空白TABにも@として置換されてしまいます。
for /f "delims=" %%a in (hoge.txt) do (
set line=%%a
set line=!line:^ =@!
echo !line! >> moge.txt
行頭の指定や行末、その他、\wや\d、(a|b|c)などのグループ指定など正規表現で置換の指定とかはできませんでしょうか?
アドバイス、宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
バッチ処理のみで正規表現は難しいですよ。
とは云え、個別対応で「関係のない空白TABにも@として置換されてしまいます。」に対応するならば、"tokens=1*" が使えるかも知れません。
置換でなく表示をカンマで区別した例ですが、こんな動きをします↓
for /F "tokens=1*" %i in ("a b c d") do @echo %i, %j
a, b c d
※a 以外はそのまま渡されるんじゃなかったかと期待。
有難うございます、大変参考になりました。
バッチのみでは難しい(この情報だけでも大変助かります)とのことなので、冗長的になるかもですが、それぞれ書いて試行錯誤してみたいと思います。
カンマ区切りの例もこの後試してみたいと思います。
あまりにも厳しい場合には、何かしらのプログラム経由で対応しようと思いますが、クリック1つでできればと考えておりました…。
有難うございます!!
No.4
- 回答日時:
バッチファイルの変数展開時の置換機能では正規表現は使えないです。
「先頭の空白を@に置換」なら、
「先頭の1文字目が空白なら、@の後ろに2文字目以降を繋げる」という方法で出来ます。
if "!line:~0,1!"==" " set line=@!line:~1!
あと、
echo !line! >> moge.txt
だと、lineの内容の後に空白1つ付いた物が書き込まれますが、意図通りですか?
No.3
- 回答日時:
「どうしてもコマンドプロンプトだけ (その他のプログラムは一切使わない) でやりたい」とかいうアレな趣向を持っているのであれば止めはしないけど, 一般人はそれなりなフィルター (sed とか awk とか) を導入すべきだと思うよ.
sed や awk でもアレっぽい雰囲気はあるけど.
有難うございます。
無知で恐縮です、sed とか awk という事なのですが、こちら自体把握していないので調べてみたいと思います。
アドバイス大変有難うございます。mm
>>とかいうアレな趣向を持っているのであれば止めはしないけど,
特にコマンドプロンプト、bat,でなければ…という事ではないのですが、使用しているのがWindowsなので、bat経由でできるのかな?と安易に思ってしまった次第です。
調べてみて難しい場合には、pythonでもなんでも良いのですが、プログラム経由で吐かせることとしたいと思います。
sed、awkについて調べてみたいと思います。
有難うございます。mm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
Dosブロンプトでtabを出力したい
その他(プログラミング・Web制作)
-
-
4
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
5
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
6
バッチファイルで正規表現を使った置換
その他(プログラミング・Web制作)
-
7
バッチファイル内置換
その他(開発・運用・管理)
-
8
バッチファイルの正規表現を利用した文字列検索
その他(プログラミング・Web制作)
-
9
バッチ処理 特定の文字以降をリネーム
Ruby
-
10
バッチファイル 文字列にスペースがある場合
その他(プログラミング・Web制作)
-
11
バッチファイルで文字列削除について
その他(プログラミング・Web制作)
-
12
バッチで指定ファイルの文末に改行コードをつけたい
その他(コンピューター・テクノロジー)
-
13
テキストファイルから最終行の抽出
Windows Me・NT・2000
-
14
コマンドプロンプトで変数が数字であることを判定する方法
その他(プログラミング・Web制作)
-
15
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
16
バッチでCSVを処理する時、空の項目があった場合
その他(プログラミング・Web制作)
-
17
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
18
DOSコマンドのforで空白行をスキップしない
UNIX・Linux
-
19
バッチファイルで変数の中身をファイル出力したい
UNIX・Linux
-
20
バッチファイル テキストファイル内の最後の\\以下を削除したい
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1コールだけ鳴るけど切れる電話...
-
相手側の携帯が電源切れてる時...
-
ラインナップとラインアップは...
-
face book で女性の方からline ...
-
Windowsのバッチファイルで正規...
-
生産ラインの品質を表す直行率...
-
swift言語のprintln()関数で「p...
-
法線(normal line)はなぜそう...
-
いきなりラインのトークに「新...
-
遠くにいる友達とLINE交換する...
-
INIファイルからのデータ読込み...
-
python flask から fastapiへの...
-
ある男子から、ライン追加され...
-
「一番上、真ん中、下」を示す英語
-
先輩のライン(男性)を追加した...
-
名前を教えてしまったら何に悪...
-
新しいクラスメイト全員のLINE...
-
私がlineのアイコンを変更する...
-
まだそんなに親しくない相手と...
-
毎月記念日をlineで祝うのって...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
相手側の携帯が電源切れてる時...
-
1コールだけ鳴るけど切れる電話...
-
face book で女性の方からline ...
-
ラインナップとラインアップは...
-
遠くにいる友達とLINE交換する...
-
Windowsのバッチファイルで正規...
-
よく05(04)lineって見かけるん...
-
「一番上、真ん中、下」を示す英語
-
生産ラインの品質を表す直行率...
-
python flask から fastapiへの...
-
いきなりラインのトークに「新...
-
ある男子から、ライン追加され...
-
毎月記念日をlineで祝うのって...
-
3ヶ月前に別れた彼とはカカオト...
-
タイトルの改行
-
会社の先輩とLINE プライベート...
-
まだそんなに親しくない相手と...
-
法線(normal line)はなぜそう...
-
LINEで好きな人が「笑」を全然つ...
-
2000年生まれなのですが 00line...
おすすめ情報