另一个PowerShell
+RegEx
困境。试图解析包含脚本文件的文件夹/目录。找到包含变量设置的脚本,并输出脚本文件名以及分配给变量的值。
我看到的规则是:
- 所需的步骤将始终以
MVL
可能或可能不以 1 个或多个空格开头。 - 该步骤以冒号 (
;
) 结束。 - 赋值结束于
',
- 需要显示
MVL
脚本中所有步骤的变量值。
我需要捕获的是脚本文件的名称,以及变量SRCFILE
, SERVER
, TARGETFILE
.
我正在寻找的数据将是这样的:
MVL SRCFILE='\PATH\FOLDER\FILENAME.TXT ',SERVER='SERVERNAME ', TARGETFILE='TARGET.TXT ',PARM1=O,PARM2=N,PARM3=N,PARM4=Y,PARM5=N,PARM6=' ', PARM7=N,PARM8='NONE ',PARM8=' ', PARM9=00; Other lines I don't care about Could be blank lines * Comment lines will begin with asterisk, need to skip MVL SRCFILE='\PATH\FOLDER2\FILENAME'&1'.TXT ', SERVER='SERVERNAME2 ', TARGETFILE='TARGET2.TXT ',PARM1=O,PARM2=N,PARM3=N,PARM4=Y,PARM5=N,PARM6=' ', PARM7=N,PARM8='NONE ',PARM8=' ', PARM9=00;
我从 RegEx 模式开始,但现在完全不知所措。我知道这只会从指定的文件中读取数据。
我最新的是这个,但我无法让它查看连续的行并捕获所需的值:
Select-String -Pattern "(?:^[\s]*?MVL\s*?SRCFILE=')(.*)(?:\s+?',)(?:.*$)" c:\scripts\Script1.scl
因此,如果样本数据位于Script1.scl
我的输出中,则如下所示:
Script1.scl \PATH\FOLDER\FILENAME.TXT SERVERNAME TARGET.TXT
Script1.scl \PATH\FOLDER\FILENAME'&1'.TXT SERVERNAME2 TARGET2.TXT