[問題] 如何利用batch檔修改檔案內容?消失

看板Programming作者時間11年前 (2014/11/27 17:05), 11年前編輯推噓0(005)
留言5則, 1人參與, 最新討論串1/1
請問大家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
可以用for切,但是不建議
11/27 17:18, 1F

11/27 17:20, , 2F
用C或VBA還比較簡單
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
反正是改token 寫C程式來改有何不可
11/27 19:15, 4F

11/27 19:16, , 5F
這種離線工具隨便怎麼寫都可以
11/27 19:16, 5F
文章代碼(AID): #1KTkb8C2 (Programming)