Спасаясь двойной обратной косой чертой в заводной - PullRequest
0 голосов
/ 16 октября 2018

У меня есть скрипт 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

1 Ответ

0 голосов
/ 16 октября 2018

Ваша проблема не имеет ничего общего с обратными слешами.Это связано с приоритетом.То, что вы написали, эквивалентно:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...