长话短说例如,我需要让客户端定期运行正则表达式查找和替换,在许多大小不超过 3mb 的 SVG 文件上执行如下操作:
- 寻找:
font-family=".*?"
- 用。。。来代替:
font-family="Liberation Sans, Helvetica, Arial, sans-serif"
在大多数代码编辑器中都很容易:但问题是,执行此过程的员工将处于非常受限的环境- Windows 7 基本上没有非标准软件,除了 Microsoft Office 和可能的 Adobe Illustrator。虚拟桌面没有管理员权限。不幸的是,这似乎是没有商量余地的。
我试图让管理层做出例外并允许将 Notepad ++ 之类的东西添加到他们的环境中 - 但这并不像听起来那么简单(据我了解,因为它是虚拟化的,安装定制软件到一台机器意味着将其安装到 1,000 多台机器使用的服务器上,而他们非常不愿意这样做)。
因此假设无法安装自定义软件,有没有办法使用 Windows 或 Office 附带的工具进行简单的正则表达式查找/替换?
我知道 Word 有一些正则表达式查找/替换功能,但不知道有什么方法可以阻止它弄乱它接触的任何代码文件。Windows 附带了许多其他小工具:它们中的任何一个都可以做到这一点吗?基于 Web 的工具也可以工作。
答案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
根据您的舒适程度,您可以修改它以处理一组文件,或者编写一个批处理文件,按文件数量多次调用它。