我需要将构造的字符串从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=""))