替换powershell中的异常
我是powershell的初学者,对C#非常了解。我有一个下载东西的命令。我写这个脚本是为了从这个url下载所有的sgf围棋游戏,并试图为我写一个powershell脚本。所以我写了一个剧本:替换powershell中的异常,powershell,replace,download,Powershell,Replace,Download,我是powershell的初学者,对C#非常了解。我有一个下载东西的命令。我写这个脚本是为了从这个url下载所有的sgf围棋游戏,并试图为我写一个powershell脚本。所以我写了一个剧本: Get-Content test.txt| ForEach-Object { if($_ -eq "=`"javascript:viewdemogame(`'*.sgf`')`" tit") { $filename = $_
Get-Content test.txt|
ForEach-Object
{
if($_ -eq "=`"javascript:viewdemogame(`'*.sgf`')`" tit")
{
$filename = $_ -replace '=`"javascript:viewdemogame(`''
$filename = $filename -replace '`')`" tit'
&"(Path)/download.exe" ("http://www.gogameworld.com/webclient/qipu/" + $filename)
}
}
但是,当我运行脚本时,我不断遇到以下错误:
Unexpected token '`'' in expression or statement.
At (PATH)\test.ps1:7 char:37
+ $filename = $filename -replace '`' <<<< )'
+ CategoryInfo : ParserError: (`':String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
表达式或语句中出现意外标记'`'。
在(路径)\test.ps1:7字符:37
+$filename=$filename-replace'`尝试此操作,将文件内容作为一个字符串读取,然后使用Regex.Matches获取括号中包含的所有文本:
$content = Get-Content test.txt | Out-String
$baseUrl = 'http://www.gogameworld.com/webclient/qipu/'
[regex]::matches($content,"javascript:viewdemogame\('([^\']+)'\)") | Foreach-Object{
$url = '{0}{1}' -f $baseUrl,$_.Groups[1].Value
& "(Path)/download.exe" $url
}
下面是对regex模式(使用RegexBuddy创建)的解释:
“{0}{1}”与-f运算符一起用于创建字符串。{0}映射到运算符右侧的第一个值(例如$baseUrl),而{1}映射到第二个值。在幕后,PowerShell正在起诉.NET String.Format方法。您可以在此处阅读更多信息:尝试此操作,将文件内容作为一个字符串读取,然后使用Regex.Matches获取括号中包含的所有文本:
$content = Get-Content test.txt | Out-String
$baseUrl = 'http://www.gogameworld.com/webclient/qipu/'
[regex]::matches($content,"javascript:viewdemogame\('([^\']+)'\)") | Foreach-Object{
$url = '{0}{1}' -f $baseUrl,$_.Groups[1].Value
& "(Path)/download.exe" $url
}
下面是对regex模式(使用RegexBuddy创建)的解释:
“{0}{1}”与-f运算符一起用于创建字符串。{0}映射到运算符右侧的第一个值(例如$baseUrl),而{1}映射到第二个值。在幕后,PowerShell正在起诉.NET String.Format方法。您可以在这里阅读更多信息:')
“tit”
-replace运算符有两个参数,以逗号分隔。第一个是与要替换的内容相匹配的正则表达式。第二个是要与之关联的字符串。您似乎缺少第二个参数。'')
“tit”
-replace运算符接受两个参数,逗号分隔。第一个是一个正则表达式,它匹配您想要替换的内容。第二个字符串是您要使用其进行中继的字符串。您似乎缺少第二个参数。顺便问一句,您能解释一下您的脚本是如何工作的吗?我会从中学到很多。谢谢我更新了我的答案。基本上它给出了括号内的所有文本。我没有得到这个位(“([^\']+)”)和“{0}{1}”'另外,powershell中的转义字符不是吗?`?谢谢!以前甚至不知道正则表达式。一个somme链接。学到了很多:)顺便说一句,你能解释一下你的脚本是如何工作的吗?我会从中学到很多。谢谢!我更新了我的答案。基本上它会给你括号内的所有文本。我不明白这一点([^\]+')和“{0}”{1} '另外,powershell中的转义字符不是吗?`?谢谢!以前甚至不知道正则表达式。awesome link。学到了很多:)