iT邦幫忙

1

BAT 字串內容取代問題

各位先進不好意思,小弟正在編輯一個字串替換的BAT檔案,但遇到了點問題麻請各位先進幫幫小弟解惑,感恩!!

文字檔內容(test.txt)

SET VERSION=XXXXXXXX
SET CHK_VERSION1=XXXXXXXX
SET CHK_VERSION2=XXXXXXXX

目標:

  將VERSION=XXXXXXXX的X改成它值。
  將CHK_VERSION2=XXXXXXXX的X改成它值(跟VERSION=XXXXXXXX的X值為不同值)

  
程式碼

@echo off&setlocal enabledelayedexpansion
for /f "eol=* tokens=*" %%i in (test.txt) do (
set str=%%i
set "str=!str:VERSION=XXXXXXXX=VERSION=12345678!"
echo !str!>>temp.txt
)

問題:

  無法取代成想要的結果

  

以上,煩請先進們協助或提供一些關鍵字給小弟,萬分感謝。

之前也是一直在查相關內容,不知道是不是多=的關係,我也是搞不定
期待解答

2 個回答

0
jay0123
iT邦高手 2 級 ‧ 2020-02-05 09:42:34

請參考
假設:D:\tmp\txt 裡頭有許多TXT檔案
目的:變更所有TXT檔案中,含有"1"的內容,改成"2"
作法:

1.準備一個r.ps1 (用記事本貼上另存為ps1副檔名即可)

Get-ChildItem d:\tmp\txt -Filter *.txt | Foreach-Object{
(Get-Content $.FullName) |
Foreach-Object {$
-replace "1", "2"} |
Set-Content $_.FullName
}

2.在cmd下執行
PowerShell -ExecutionPolicy Bypass -File r.ps1

0
蛙蛙醬
iT邦新手 5 級 ‧ 2020-02-07 04:37:18

你本意是 "VERSION=XXXXXXXX" 取代成 "VERSION=12345678" 吧

加個跳脫字元看看
set "str=!str:VERSION^=XXXXXXXX=VERSION^=12345678!"

我要發表回答

立即登入回答