Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
groovy中的转义双反斜杠_Groovy - Fatal编程技术网

groovy中的转义双反斜杠

groovy中的转义双反斜杠,groovy,Groovy,我有一个Groovy脚本,它应该在远程机器上从注册表项读取一个值。当我在本地机器上或从网络上的另一台机器上运行reg query命令时,我会返回正确的值。在本地计算机上运行Groovy脚本时(删除“\\'+hostname+'\”),也会得到正确的值 运行下面列出的代码时,出现以下错误: java.io.IOException: Cannot run program "\HKEY_LOCAL_MACHINE\SOFTWARE\Application\": CreateProcess error=

我有一个Groovy脚本,它应该在远程机器上从注册表项读取一个值。当我在本地机器上或从网络上的另一台机器上运行reg query命令时,我会返回正确的值。在本地计算机上运行Groovy脚本时(删除“\\'+hostname+'\”),也会得到正确的值

运行下面列出的代码时,出现以下错误:

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