正则表达式替换引号中的字符串路径
regex replace string path in quotes
你好,我在很多服务器上都有一个这样结尾的配置文件,所以我需要在行的开头添加#
"C:\Documents and Settings\All Users\Application Data\McAfee\DesktopProtection\UpdateLog.txt" 8h 警告 * 0800 1800
"C:\EURNTCC\mcafee\sucessfull-update.log.txt" 8 小时警告 * 0800 1800
我做了一个这样的小脚本
$file="\server\C$\osit\etc\act_mon.cfg"
$text1='"C:\DOCUMENTS AND SETTINGS\ALL USERS\APPLICATION DATA\MCAFEE\DESKTOPPROTECTION\UPDATELOG.TXT"'
$text2='"C:\EURNTCC\MCAFEE\SUCESSFULL-UPDATE.LOG.TXT"'
(gc $file) -replace $text2 ,("#" + $text1) |Set-Content $file
(gc $file) -replace $text2 ,("#" + $text2) |Set-Content $file
我有这个错误 任何帮助理解这个错误,我有 650 个服务器要更新
正则表达式模式“C:\EURNTCC\MCAFEE\SUCESSFULL-UPDATE.LOG.TXT”无效。
在 line:1 char:1
- (gc $file) -替换 $text1 ,("#" + $text1) |Set-Content $file
-
+ CategoryInfo : InvalidOperation: ("C:\EURNTCC\MCA...UPDATE.LOG.TXT":String) [], RuntimeException
+ FullyQualifiedErrorId : InvalidRegularExpression
-replace
使用正则表达式。您希望它搜索的字符串包含在正则表达式中具有特殊含义的字符,需要以反斜杠作为前缀。 (最明显的是点和反斜杠)
您不必手动执行此操作,但可以使用 [regex]
类型加速器中的静态方法 Escape()
:
$text1 = '"C:\DOCUMENTS AND SETTINGS\ALL USERS\APPLICATION DATA\MCAFEE\DESKTOPPROTECTION\UPDATELOG.TXT"'
$text2 = '"C:\EURNTCC\MCAFEE\SUCESSFULL-UPDATE.LOG.TXT"'
$search1 = [regex]::Escape($text1)
$search2 = [regex]::Escape($text2)
此外,您可以链接 replace
这样您就不必两次获取内容:
(Get-Content $file) -replace $search1 ,("#" + $text1) -replace $search2 ,("#" + $text2) | Set-Content $file
你好,我在很多服务器上都有一个这样结尾的配置文件,所以我需要在行的开头添加#
"C:\Documents and Settings\All Users\Application Data\McAfee\DesktopProtection\UpdateLog.txt" 8h 警告 * 0800 1800
"C:\EURNTCC\mcafee\sucessfull-update.log.txt" 8 小时警告 * 0800 1800
我做了一个这样的小脚本
$file="\server\C$\osit\etc\act_mon.cfg"
$text1='"C:\DOCUMENTS AND SETTINGS\ALL USERS\APPLICATION DATA\MCAFEE\DESKTOPPROTECTION\UPDATELOG.TXT"'
$text2='"C:\EURNTCC\MCAFEE\SUCESSFULL-UPDATE.LOG.TXT"'
(gc $file) -replace $text2 ,("#" + $text1) |Set-Content $file
(gc $file) -replace $text2 ,("#" + $text2) |Set-Content $file
我有这个错误 任何帮助理解这个错误,我有 650 个服务器要更新
正则表达式模式“C:\EURNTCC\MCAFEE\SUCESSFULL-UPDATE.LOG.TXT”无效。 在 line:1 char:1
- (gc $file) -替换 $text1 ,("#" + $text1) |Set-Content $file
-
+ CategoryInfo : InvalidOperation: ("C:\EURNTCC\MCA...UPDATE.LOG.TXT":String) [], RuntimeException + FullyQualifiedErrorId : InvalidRegularExpression
-replace
使用正则表达式。您希望它搜索的字符串包含在正则表达式中具有特殊含义的字符,需要以反斜杠作为前缀。 (最明显的是点和反斜杠)
您不必手动执行此操作,但可以使用 [regex]
类型加速器中的静态方法 Escape()
:
$text1 = '"C:\DOCUMENTS AND SETTINGS\ALL USERS\APPLICATION DATA\MCAFEE\DESKTOPPROTECTION\UPDATELOG.TXT"'
$text2 = '"C:\EURNTCC\MCAFEE\SUCESSFULL-UPDATE.LOG.TXT"'
$search1 = [regex]::Escape($text1)
$search2 = [regex]::Escape($text2)
此外,您可以链接 replace
这样您就不必两次获取内容:
(Get-Content $file) -replace $search1 ,("#" + $text1) -replace $search2 ,("#" + $text2) | Set-Content $file