回答編集履歴

2

微修正

2025/02/19 14:23

投稿

otn
otn

スコア86167

test CHANGED
@@ -24,5 +24,5 @@
24
24
  ファイルの3行目が`"version": "1.2.!3!"`だったりするとこれらコードでは駄目です。
25
25
  `!`があっても大丈夫なように作り直すのは多分可能。
26
26
 
27
- 「どんな文字が来てもOK」というのはバッチスクリプトでは無理ですので、そういうケースでは他の言語を検討しましょう。
27
+ 「どんな文字が来てもOK」というのはバッチスクリプトでは無理と思った方が良いですそういうケースでは他の言語を検討しましょう。
28
28
 

1

別解追記

2025/02/19 14:21

投稿

otn
otn

スコア86167

test CHANGED
@@ -10,3 +10,19 @@
10
10
  `^`は「直後の1文字をクォートする」という機能です。それ自体がクォートされてない限りですが。
11
11
  `"tokens=3 delims=^" "`だと、`^`が`"`に囲まれてクォートされているため「直後の1文字をクォートする」という機能を失ってしまうので駄目です。
12
12
 
13
+ ## 追記
14
+ と思いましたが、単純に「`"`の削除」と考えると
15
+ ```CMD
16
+ for /f "tokens=2 delims=: " %%v in (%%a) do (
17
+ set v=%%v
18
+ echo !v:"=!
19
+ )
20
+ ```
21
+ 一旦変数にセットすると、文字列置換が使えます。変数中のすべての`"`を削除。こちらは簡単ですね。
22
+
23
+ いずれにせよ、バッチスクリプトでの文字列処理は難しいです。
24
+ ファイルの3行目が`"version": "1.2.!3!"`だったりするとこれらコードでは駄目です。
25
+ `!`があっても大丈夫なように作り直すのは多分可能。
26
+
27
+ 「どんな文字が来てもOK」というのはバッチスクリプトでは無理ですので、そういうケースでは他の言語を検討しましょう。
28
+