groovy中的转义双反斜杠
我有一个Groovy脚本,它应该在远程机器上从注册表项读取一个值。当我在本地机器上或从网络上的另一台机器上运行reg query命令时,我会返回正确的值。在本地计算机上运行Groovy脚本时(删除“\\'+hostname+'\”),也会得到正确的值 运行下面列出的代码时,出现以下错误:groovy中的转义双反斜杠,groovy,Groovy,我有一个Groovy脚本,它应该在远程机器上从注册表项读取一个值。当我在本地机器上或从网络上的另一台机器上运行reg query命令时,我会返回正确的值。在本地计算机上运行Groovy脚本时(删除“\\'+hostname+'\”),也会得到正确的值 运行下面列出的代码时,出现以下错误: java.io.IOException: Cannot run program "\HKEY_LOCAL_MACHINE\SOFTWARE\Application\": CreateProcess error=
java.io.IOException: Cannot run program "\HKEY_LOCAL_MACHINE\SOFTWARE\Application\": CreateProcess error=2, The system cannot find the file specified
这让我相信我没有正确地逃离这条道路。如果这是正确的,我应该如何避开双反斜杠
以下是脚本:
def hostname = '10.1.1.2'
def outVal = ''
try {
output = 'reg query \\\\' + hostname + '\\HKEY_LOCAL_MACHINE\\SOFTWARE\\SynAEM\\UDF1 -v PatchGroup'.execute().text
outVal = output.tokenize(' ')[-1]
}
catch(Exception e) {
outVal = 'NotSpecified'
println e
}
println 'PatchGroup=' + outVal
return 0
你的问题与反斜杠无关。这与优先权有关。您所写的内容相当于:
output = 'reg query \\\\' + hostname +
('\\HKEY_LOCAL_MACHINE\\SOFTWARE\\SynAEM\\UDF1 -v PatchGroup'.execute().text)
execute()
方法试图运行最后一个字符串,即注册表名。您需要的是:
output = ('reg query \\\\' + hostname + '\\HKEY_LOCAL_MACHINE\\SOFTWARE\\SynAEM\\UDF1 -v PatchGroup').execute().text
或者,可能更清楚一点:
output = "reg query \\\\$hostname\\HKEY_LOCAL_MACHINE\\SOFTWARE\\SynAEM\\UDF1 -v PatchGroup".execute().text