
タイトルの通りなのですが、バッチファイルで置換を行う設定をしているのですが、正規表現とかでも指定できればと思うのですが、色々と試してみるのですがうまくいかず、アドバイス頂けないでしょうか?
具体的には、以下の感じで回しているのですが、この定義だと関係のない空白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で質問しましょう!
似たような質問が見つかりました
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- PHP PHPでテキストファイルに保存した時の改行問題 1 2022/11/19 15:07
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- HTML・CSS CSS上での計算を行うためのルールについて教えてください。 3 2022/08/15 14:43
このQ&Aを見た人はこんなQ&Aも見ています
-
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
Dosブロンプトでtabを出力したい
その他(プログラミング・Web制作)
-
-
4
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
5
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
6
バッチファイルで正規表現を使った置換
その他(プログラミング・Web制作)
-
7
バッチファイル内置換
その他(開発・運用・管理)
-
8
バッチファイルの正規表現を利用した文字列検索
その他(プログラミング・Web制作)
-
9
バッチ処理 特定の文字以降をリネーム
Ruby
-
10
バッチファイル 文字列にスペースがある場合
その他(プログラミング・Web制作)
-
11
バッチでCSVを処理する時、空の項目があった場合
その他(プログラミング・Web制作)
-
12
DOSコマンドのforで空白行をスキップしない
UNIX・Linux
-
13
コマンドプロンプトで変数が数字であることを判定する方法
その他(プログラミング・Web制作)
-
14
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
15
バッチファイルで文字列削除について
その他(プログラミング・Web制作)
-
16
バッチファイルで変数の中身をファイル出力したい
UNIX・Linux
-
17
バッチで指定ファイルの文末に改行コードをつけたい
その他(コンピューター・テクノロジー)
-
18
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
19
テキストファイルから最終行の抽出
Windows Me・NT・2000
-
20
バッチファイル テキストファイル内の最後の\\以下を削除したい
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
相手側の携帯が電源切れてる時...
-
1コールだけ鳴るけど切れる電話...
-
毎月記念日をlineで祝うのって...
-
face book で女性の方からline ...
-
遠くにいる友達とLINE交換する...
-
風俗に行ったとして、そこで嬢...
-
いきなりラインのトークに「新...
-
「一番上、真ん中、下」を示す英語
-
酔っ払って送られてきたlineが...
-
よく05(04)lineって見かけるん...
-
LaTeXでÅ
-
2000年生まれなのですが 00line...
-
会社の先輩とLINE プライベート...
-
先輩のライン(男性)を追加した...
-
妊娠したらどうする?聞くのは...
-
ある男子から、ライン追加され...
-
相手が携帯を解約していたら、L...
-
友達が、私のlineのトークを拡...
-
無料版FC2ホームページのエラー...
-
次の英文がわかりません;
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1コールだけ鳴るけど切れる電話...
-
相手側の携帯が電源切れてる時...
-
face book で女性の方からline ...
-
ラインナップとラインアップは...
-
Windowsのバッチファイルで正規...
-
風俗に行ったとして、そこで嬢...
-
よく05(04)lineって見かけるん...
-
生産ラインの品質を表す直行率...
-
いきなりラインのトークに「新...
-
毎月記念日をlineで祝うのって...
-
「一番上、真ん中、下」を示す英語
-
遠くにいる友達とLINE交換する...
-
python flask から fastapiへの...
-
swift言語のprintln()関数で「p...
-
ある男子から、ライン追加され...
-
先輩のライン(男性)を追加した...
-
新しいクラスメイト全員のLINE...
-
会社の先輩とLINE プライベート...
-
法線(normal line)はなぜそう...
-
INIファイルからのデータ読込み...
おすすめ情報