
タイトルの通りなのですが、バッチファイルで置換を行う設定をしているのですが、正規表現とかでも指定できればと思うのですが、色々と試してみるのですがうまくいかず、アドバイス頂けないでしょうか?
具体的には、以下の感じで回しているのですが、この定義だと関係のない空白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も見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
ショートカットのWindowsロゴキー + I。「I」は何の略?
Windows 10
-
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
Windows11についての質問ー3。
Windows 10
-
4
バッチファイルで正規表現を使った置換
その他(プログラミング・Web制作)
-
5
絶対にいけるWindowsXPsp3の無料プロダクトキーを教えてください。URLのみでも結構です。
Windows Vista・XP
-
6
windows10のアンインストール方法についてお尋ねしたいです。 古めのlenovoのノートパソコ
Windows 10
-
7
8年程前に購入したパソコンですが電源を入れてから起動し全ての機能が使えるようになるまで10分はかかり
Windows 10
-
8
実装メモリとタスクマネージャーのメモリ使用量不一致について
Windows 10
-
9
教えてgooの OS の部分に Windows11 を追加してほしい
Windows 10
-
10
やっとwindows10が動き始めたと
Windows 10
-
11
Windowsのキーボードでアンダーバー(_)を打つ時、いちいちシフトを押すのが面倒くさいのですが、
Windows 10
-
12
ウィンドウズ10 Homeパソコンで、アドオン管理にフェリカが追加されません。IE開いてるのに。 N
Windows 10
-
13
キーボードのInsertモードってどこかで確認できますか?
Windows 10
-
14
Windows 10 バージョン 22H2 にアップデートすると何かデメリットはありますか???
Windows 10
-
15
マイクロソフトから「Windows10からWindows11に変化させる推奨」が来ます。
Windows 10
-
16
Windowsについて
Windows 10
-
17
windows 制限解除のやり方教えて
Windows 10
-
18
フォルダについて。
Windows 10
-
19
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
20
PCからのスピーカー音を録音したいができない
Windows 10
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ラインナップとラインアップは...
-
5
Windowsのバッチファイルで正規...
-
6
あの噂の世界三大チェーンメー...
-
7
遠くにいる友達とLINE交換する...
-
8
先輩のライン(男性)を追加した...
-
9
ラインのアカウント削除?連絡...
-
10
新しいクラスメイト全員のLINE...
-
11
INIファイルからのデータ読込み...
-
12
質問です。 先日クラスの女子に...
-
13
「一番上、真ん中、下」を示す英語
-
14
私がlineのアイコンを変更する...
-
15
phpとpostgreの接続にエラー解...
-
16
LINEのグループに入ったら...
-
17
スマホに外国の電話番号を登録...
-
18
タイトルの改行
-
19
生産ラインの品質を表す直行率...
-
20
ネットで個人の電話番号を調べ...
おすすめ情報
公式facebook
公式twitter