将&符号从R传递给PowerShell

时间:2018-06-01 14:58:21

标签: r powershell rstudio

我需要将构造的字符串从R传递给Windows Powershell。 字符串看起来类似于:

http://www.host.com/cgi-bin/something.pl?file=filename"&"argument=on"&"argument2=on"&"dir=directory

不幸的是,如果我使用“paste”构建它,R会在上面的字符串中添加一个转义反斜杠:

fname <- gsub(' ', '', gsub('\n', '',paste('http://www.host.com/cgi-bin/something.pl?
file=',filename,'"&"
argument=on"&"
argument2=on"&"
dir=',directory,'"&",
sep='')))

在R中,变量fname现在包含以下字符串:

'http://www.host.com/cgi-bin/something.pl?file=filename\"&\"argument=on\"&\"argument2=on\"&\"dir=directory

通过命令

传递给powershell时
system("powershell Invoke-WebRequest 'http://www.host.com/cgi-bin/something.pl?file=filename\"&\"argument=on\"&\"argument2=on\"&\"dir=directory' -outfile C:\test.dat")

,PowerShell当然因为反斜杠而抱怨。

cat fname

将字符串打印在R-shell中,因为它应该传递给PowerShell(即没有反斜杠):

http://www.host.com/cgi-bin/something.pl?file=test"&"argument=on"&"argument2=on"&"dir=somedir

我想把命令写入文件,执行类似“sed”的系统命令(例如

"powershell get-content somefile.txt | %{$_ -replace "expression","replace"}") 

删除文件中的反斜杠,并将该文件作为命令传递给PowerShell。但是我会再次将“表达式”中的反斜杠从R传递给powershell。有什么想法吗?

可重复的代码:

filename <- "test"
directory <- "somedir"
fname <- gsub(' ', '', gsub('\n', '',paste('http://www.host.com/cgi-bin/something.pl?
file=',filename,'"&"
argument=on"&"
argument2=on"&"
dir=',directory,
sep='')))
system(paste('powershell Invoke-WebRequest ',fname,' -outfile C:\\Windows\\temp\\test.dat',sep=""))

0 个答案:

没有答案