![有沒有辦法用標準 Windows 軟體進行純文字正規表示式尋找和取代?](https://rvso.com/image/1416376/%E6%9C%89%E6%B2%92%E6%9C%89%E8%BE%A6%E6%B3%95%E7%94%A8%E6%A8%99%E6%BA%96%20Windows%20%E8%BB%9F%E9%AB%94%E9%80%B2%E8%A1%8C%E7%B4%94%E6%96%87%E5%AD%97%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F%E5%B0%8B%E6%89%BE%E5%92%8C%E5%8F%96%E4%BB%A3%EF%BC%9F.png)
長話短說,我需要使客戶端能夠定期運行正則表達式查找和替換,在許多大小高達 3mbs 的 SVG 文件上看起來像這樣:
- 尋找:
font-family=".*?"
- 用。
font-family="Liberation Sans, Helvetica, Arial, sans-serif"
在大多數程式碼編輯器中都很容易:但問題是,執行此過程的員工將在環境非常受限- Windows 7,除了 Microsoft Office 和可能的 Adobe Illustrator 之外,基本上沒有非標準軟體虛擬桌面沒有管理員權限。不幸的是,這似乎是沒有商量餘地的。
我試圖為管理層提供一個例外,並允許像 Notepad++ 這樣的東西添加到他們的環境中 - 但這並不像聽起來那麼簡單(據我所知,因為它是虛擬化的,安裝自定義軟體來一台機器意味著將其安裝到1,000 多台機器使用的伺服器上,而他們非常不願意這樣做)。
因此,假設無法安裝自訂軟體,是否有任何方法可以使用 Windows 或 Office 隨附的工具進行簡單的正規表示式尋找/替換?
我知道 Word 有一些正規表示式查找/替換功能,但不知道有什麼方法可以阻止它弄亂它所接觸的任何程式碼檔案。 Windows 附帶了許多其他小工具:它們中的任何一個都可以做到這一點嗎?網路為基礎的工具也可以發揮作用。
答案1
答案2
他們可以運行 VBScript 嗎?如果是這樣,那麼下面的(快速拼湊在一起的)VBScript 將會起作用:
Option Explicit
If WScript.Arguments.Count <> 2 Then
WScript.Echo "Usage: " & WScript.ScriptName & " <input> <output>"
WScript.Quit
End If
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(WScript.Arguments.Item(0)) = False Then
WScript.Echo "Error: `" & WScript.Arguments.Item(0) & "` does not exist."
WScript.Quit
End If
Dim oFile : Set oFile = fso.OpenTextFile(WScript.Arguments.Item(0))
Dim sContents : sContents = oFile.ReadAll : oFile.Close
Dim re : Set re = New Regexp
re.IgnoreCase = True : re.Global = True : re.Pattern = "font-family=\"".*?\"""
sContents = re.Replace(sContents, "font-family=""Liberation Sans, Helvetica, Arial, sans-serif""")
Set oFile = fso.CreateTextFile(WScript.Arguments.Item(1), True)
oFile.Write sContents
oFile.Close
Set re = Nothing
Set oFile = Nothing
Set fso = Nothing
將其另存為某種內容(例如convert.vbs
),然後使用以下命令列運行它:
cscript convert.vbs <input file> <output file>
如果要修改後覆蓋原始文件,只需將文件名輸入兩次即可,例如:
cscript convert.vbs diagram.svg diagram.svg
根據您的舒適程度,您可以修改它以處理一組文件,也可以編寫一個批次文件來呼叫它與文件數量一樣多的次數。