iT邦幫忙

0

用批次檔讀取文字檔後將檔案內容中特定文字取代

  • 分享至 

  • xImage

請看下圖,我想用批次檔將某個資料夾底下所有檔案中,有下列反白文字的部分都刪掉
要怎麼寫才好呢
因為裡面還包含了換行符號跟雙引號,感覺有點難,請各位大大幫幫忙,謝謝~~
https://ithelp.ithome.com.tw/upload/images/20230526/2010917074suhOfjWE.png

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2023-05-26 15:57:31 檢舉
用vscode去做全資料夾的搜尋和取代,這個到底為啥會想自己寫...
還用batch檔要處理
m88310012 iT邦新手 5 級 ‧ 2023-05-26 16:24:42 檢舉
大師您好,其實說來話長,簡單來說就是我們會定期產出N個檔案,雖然目前是用notepad++的"在多個檔案中取代"的方式處理,這個方式算是很簡單了,但想著如果能程式化就可以排程就更好了。只是功力不夠不會寫,所以上來求問
Yaowen iT邦研究生 3 級 ‧ 2023-05-26 16:47:24 檢舉
你可以寫一個exe執行檔 然後用排程去呼叫執行檔去做你想做的事情就好
m88310012 iT邦新手 5 級 ‧ 2023-05-26 16:50:03 檢舉
Yaowen大大 您說的後面那一段我會,但是"寫一個exe執行檔"<=這個我不會XD
froce iT邦大師 1 級 ‧ 2023-05-26 17:30:43 檢舉
https://tools.stefankueng.com/grepWin.html
這個有cmd 調用的方法
https://tools.stefankueng.com/grepWin_cmd.html
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
re.Zero
iT邦研究生 5 級 ‧ 2023-05-26 19:19:43
最佳解答

在 JSON 檔案進行含換行字元的字串取代, 要用純 .bat 來搞太硬了。
( 是有「把換行字元臨時換成自訂識別字串,搜尋、取代完整個字串後,再把自訂識別字串換回換行字元」類似這種彆扭的各樣方法, 但真心不推薦給不熟 batch-script 的人, 會被 cmd.exe 的特性各種花式搞死…… )

若你的 Windows 有 Windows PowerShell (你的系統環境應該沒惡劣到連這都沒有吧?) , 給個 .ps1 腳本檔案給你參考:

## This is a '.ps1' file;
## Tested @[Windows-PowerShell-v5.1];
$myOldStr = @'
,
"HK_BTWN_FLT": [],
"LL_CATCHES": []
'@
$myNewStr = ''
$mySrcFilePath = '.\aDemo.json'
$myDstFilePath = $mySrcFilePath ## 這是故意留的, 介意的話請自改~
(Get-Content $mySrcFilePath -Raw).Replace($myOldStr, $myNewStr) | Set-Content $myDstFilePath -Encoding UTF8
## 

其他參考:


另, 你也可以用, 在 .bat 內呼叫 powershell.exe 執行 .ps1 這種有點繞的方式:
( -ExecutionPolicy RemoteSigned 這參數是最近看到有人執行權限問題而加的; 你也可以不加上這參數來試試環境。 )

rem ## This is a batch-file;
powershell.exe -ExecutionPolicy RemoteSigned -Command '.\myScript.ps1'

P.s.:

  • 請善用 程式碼與語法高亮標記 - iT邦幫忙 的 Markdown
    不然, 至少, 編輯區工具列, 有個 新增程式碼 (Ctrl-Alt-C) 能用。
    editor-toolbar
    ( 程式碼區塊 亦可用以存放各種文字資料, 以方便他人閱覽。 )

  • iThelp-Markdown 的語法高亮之自動識別時常錯判, 建議用下面方式 (json) 指定語言:

```json
{
  "msg": "nope"
}
```
m88310012 iT邦新手 5 級 ‧ 2023-05-26 22:28:59 檢舉

謝謝大大,您的方法我用成功了,太感謝您了~~

我要發表回答

立即登入回答