Я сейчас работаю над проверкой конфигурации системы.Для этого мне нужно извлечь операционную систему тестируемой машины и проверить ее на файл .csv
.
К сожалению, во время тестирования одна машина доставила мне немало головной боли: после извлечения строки изКоманда WMI, символ ÿ
вставляется там, где должен быть пробел.В результате, сравнение строк неверно, хотя на самом деле это не так.Вот небольшой блок кода, который поможет вам понять процесс:
//The command to execute
String masterCommand = "wmic os get ";
String command = "Caption";
//The process that executes the command
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", masterCommand + command);
Process p = pb.start();
p.waitFor();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
//The command result stored in a string
while((line = br.readLine()) != null) {
result += line;
}
//The string cleaned of unwanted substring and trailing spaces
result = result.replace(command, "").trim();
Ожидаемый результат будет Microsoft Windows 10 Enterprise
, но в итоге он будет Microsoft Windowsÿ10 Enterprise
Я думал, что с использованием Java *Метод 1012 * решит проблему, но ничего не даст.Вот замена, которую я сейчас использую.
result = result.replace("(?i)windows.", "Windows ");
Я должен добавить, что команда (wmic os get Caption
) выводит правильный результат на cmd, а также, кажется, правильно выводит его в файл .txt
.
TL; DR
Я использую wmic внутри Java с использованием ProcessBuilder
и получаю нежелательный символ (ÿ
), который не обнаруживаетсяreplace()
.
Что я могу сделать, чтобы получить правильный результат (избегая записи в файл и затем читая его)?
Пожалуйста, укажителюбая необходимость в разъяснениях или исправлениях.
Заранее благодарим за ваши ответы.