
長い話は短く、最大 3 MB のサイズの多数の SVG ファイルに対して、次のような正規表現の検索と置換をクライアントが定期的に実行できるようにする必要があります。
- 探す:
font-family=".*?"
- と置換する:
font-family="Liberation Sans, Helvetica, Arial, sans-serif"
ほとんどのコードエディタでは簡単ですが、問題は、このプロセスを実行する従業員が非常に制限された環境- Windows 7(Microsoft OfficeとAdobe Illustratorを除く非標準ソフトウェアは基本的にインストールされていない)仮想デスクトップ管理者権限はありません。残念ながら、これは交渉の余地がないようです。
私は経営陣に例外を設けて、Notepad++ のようなものを環境に追加できるようにしてほしいと訴えていますが、これは言うほど簡単ではありません (私の理解では、仮想化されているため、カスタム ソフトウェアを 1 台のマシンにインストールすることは、1,000 台以上のマシンが使用するサーバーにインストールすることを意味し、経営陣はそれに対して非常に抵抗を感じています)。
したがって、カスタム ソフトウェアのインストールが不可能であると仮定すると、Windows または Office に付属するツールを使用して、単純な正規表現の検索/置換を行う方法はありますか?
Word に正規表現の検索/置換機能があることは知っていますが、それが関係するコード ファイルを台無しにしないようにする方法は知りません。Windows には他にも多くの小さなツールがパッケージ化されていますが、どれかでこれができるでしょうか? Web ベースのツールでも機能する可能性があります。
答え1
実際には選択肢はたくさんあります。
このオンラインツールは素晴らしいです -->http://www.regexr.com/
また、NOTEPAD++ のポータブル バージョンをダウンロードして、そこで何でも実行できます。
幸運を!
答え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>
変更を加えて元のファイルを上書きしたい場合は、ファイル名を 2 回入力します。例:
cscript convert.vbs diagram.svg diagram.svg
快適さのレベルに応じて、これをファイルのグループで動作するように変更するか、ファイルの数だけこれを呼び出すバッチ ファイルを作成することができます。