替换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 = $_

我是powershell的初学者,对C#非常了解。我有一个下载东西的命令。我写这个脚本是为了从这个url下载所有的sgf围棋游戏,并试图为我写一个powershell脚本。所以我写了一个剧本:

    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。学到了很多:)