Existe alguma maneira de fazer um regex de texto simples localizar e substituir pelo software padrão do Windows?

0

Longa história curta , preciso ativar um cliente para executar rotineiramente uma localização e substituição de expressão regular em muitos arquivos SVG com até 3 MB de tamanho:

  • Localizar: font-family=".*?"
  • Substituir por: font-family="Liberation Sans, Helvetica, Arial, sans-serif"

Fácil na maioria dos editores de código: mas o problema é que os funcionários que farão esse processo estarão em um ambiente muito restrito - o Windows 7 praticamente não possui software não padrão, exceto Microsoft Office e possivelmente o Adobe Illustrator, em desktops virtuais sem direitos de administrador. Isto parece ser inegociável, infelizmente.

Estou tentando fazer com que o gerenciamento faça uma exceção e permita que algo como o Notepad ++ seja adicionado ao ambiente deles - mas isso não é tão simples quanto parece (pelo que entendi, porque é virtualizado, instalando software personalizado para uma máquina significa instalá-lo nos servidores que mais de 1.000 máquinas usam, o que é muito resistente a fazer).

Portanto, supondo que a instalação de software personalizado não seja possível, existe alguma maneira de fazer uma simples descoberta / substituição regex usando ferramentas que vêm com o Windows ou o Office?

Estou ciente de que o Word possui alguns recursos de localização / substituição de regex, mas não está ciente de qualquer maneira de pará-lo, além de causar uma confusão com qualquer arquivo de código que ele toque. Existem muitas outras pequenas ferramentas empacotadas com o Windows: algum deles pode fazer isso? Ferramentas baseadas na Web também podem funcionar.

    
por user568458 22.07.2014 / 10:50

2 respostas

1

Na verdade, existem muitas opções ..

Esta ferramenta on-line é ótima - > link

Além disso, você pode baixar a versão portátil do NOTEPAD ++ e rodar qualquer coisa lá ..

Boa sorte!

  • parece um link dup q - [
por 22.07.2014 / 13:59
0

Eles podem executar o VBScript? Em caso afirmativo, o seguinte VBScript (rapidamente cortado em conjunto) funcionará:

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

Salve-o como algo (por exemplo, convert.vbs ) e, em seguida, execute-o com a seguinte linha de comando:

cscript convert.vbs <input file> <output file>

Se você deseja substituir o original com as modificações, basta colocar o nome do arquivo duas vezes, por exemplo:

cscript convert.vbs diagram.svg diagram.svg

Dependendo do seu nível de conforto, você pode modificá-lo para trabalhar em um grupo de arquivos ou escrever um arquivo em lote que o chame quantas vezes houver arquivos.

    
por 22.07.2014 / 15:47