[問題] 如何利用batch檔修改檔案內容?消失
請問大家batch檔的指令
目前有個檔案 , 假如檔名是 a.sdl
裡面有一堆token設定值
然後我要用batch檔去修改其中一個設定值
(Name = "PLATFORM_TYPE" 的這個Value值, 從0改1)
EX :
TOKEN
Name = "....."
Value = "0"
Help = ""
TokenType = Boolean
TargetMAK = Yes
TargetH = Yes
End
...
...
...
...
TOKEN
Name = "PLATFORM_TYPE"
Value = "0"
Help = ""
TokenType = Boolean
TargetMAK = Yes
TargetH = Yes
End
...
...
...
查了一下google, 知道有 findstr 可以用
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes]
[/OFF[LINE]] 字串 [[drive:][path]filename[ ...]]
例如,'FINDSTR "hello there" x.y' 將會在檔案 x.y 中搜尋 "hello",或"there"。
'FINDSTR /C:"hello there" x.y' 將會在檔案 x.y 中搜尋"hello there"。
可是我要找的是 Name = "PLATFORM_TYPE" (已經有雙引號...)
這樣會完全找不到....
所以我想到笨笨的方法只有找兩次 >"<a
findstr /N /I /C:"PLATFORM_TYPE" a.sdl > b.txt
findstr /I /C:"Name = " b.txt > c.txt
然後c.txt 會印出我要找的 Name = "PLATFORM_TYPE" 以及他所在的行數
EX : 2223: Name = "PLATFORM_TYPE"
原本的想法是找到這行(2223)後
就可以把2222 ~ 2229 全砍掉
在檔案最下面再自己重新把這個token設定值加上去
(我承認這方法很笨.....)
可是我要怎麼把c.txt 中的 2223: Name = "PLATFORM_TYPE"
只知道2223 這個數字??? 並把它儲存成一個變數?
或是.... 有沒有更簡單一點的方法阿???
因為又不能直接找 Value = "0" , 因為這支檔案中也有很多token的設定值是0
謝謝大家 QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.255.85.254
※ 文章網址: http://www.ptt.cc/bbs/Programming/M.1417079112.A.302.html
→
11/27 17:18, , 1F
11/27 17:18, 1F
→
11/27 17:20, , 2F
11/27 17:20, 2F
因為這隻sdl檔案是某個Project的檔案
在build code的時候, 會把這檔案的token都build到 token.mak
然後給各隻C code使用
然後現在要做的是...
我第一次build完code後要把這token改掉再build一次
然後build的指令已經有了 (可以寫在batch 裡的commad)
可是卡在...不知道怎麼去改這個值
可以請問一下怎麼用for切嗎?
另外不建議的原因是因為??? 謝謝
※ 編輯: myrahugh (220.130.36.2), 11/27/2014 17:27:08
→
11/27 19:14, , 3F
11/27 19:14, 3F
→
11/27 19:15, , 4F
11/27 19:15, 4F
→
11/27 19:16, , 5F
11/27 19:16, 5F