Попытка переименовать компьютер ИЛИ выполнить файл .bat в Java - PullRequest
0 голосов
/ 01 августа 2011

Я пытаюсь написать скрипт для переименования компьютера (между прочим), но просто не могу понять это.Мне все равно, какой метод я использую, чтобы изменить компьютер, если я могу его изменить.Я узнал, как прочитать имя компьютера, выполнив

String computername = InetAddress.getLocalHost().getHostName();

Однако, похоже, это не дает никакой помощи в установке имени компьютера.Есть ли способ установить имя компьютера непосредственно в консоли Java?

Если нет, или если у кого-то есть опыт в этой области, я также написал сценарий с использованием powershell 2.0, который переименовывает компьютер.Я пытаюсь выяснить, как запустить это, используя

 Runtime rt = Runtime.getRuntime();
 Process proc = rt.exec("file location");

Я следовал инструкции здесь , но при попытке запустить тестовый файл .bat, который должен просто открыть командную строку Iпросто получите этот вывод в консоли java:

    C:\Users\Stephen\Desktop\opencmd.bat is found 
OUTPUT>
OUTPUT>C:\Users\Stephen\workspace\UNM computer rename>cmd.exe
OUTPUT>Microsoft Windows [Version 6.1.7601]
OUTPUT>Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
OUTPUT>

Похоже, что он просто выводит вывод командной строки в консоль java вместо того, чтобы просто запустить команду и открыть строку cmd.

Я был бы очень признателен за вводную информацию, так как я нахожусь в затруднительном положении, спасибо!

Ответы [ 2 ]

1 голос
/ 01 августа 2011

Во-первых, JDK действительно не предоставляет чистый API Java, который позволяет изменять имя компьютера.Таким образом, вы должны запустить скрипт.

Во-вторых, если вы хотите запустить скрипт, используя Runtime, вы должны указать правильную командную строку.Поэтому сначала попробуйте запустить скрипт вручную.Я считаю, что он принимает хотя бы один параметр (новое имя компьютера).Запустите его из командной строки и убедитесь, что он работает.Затем поместите его в рабочий каталог вашей Java-программы и скопируйте / вставьте командную строку в Java-код и убедитесь, что она работает сейчас.если вы хотите, вы можете прочитать STDOUT вашего скрипта и / или получить его код возврата.Если вы не заботитесь о его выводе, просто вызовите process.waitFor (), а затем получите код возврата.

Будьте осторожны с аргументами.Имя компьютера Windows может содержать символы Юникода и пробелы.Если он содержит пробелы, заключите его в кавычки.По поводу юникода просто попробуйте.Я надеюсь, что это не вызовет у вас проблем.

Вы также можете использовать класс ProcessBuilder, который позволяет передавать более качественные и переносимые аргументы.

Удачи.

0 голосов
/ 01 августа 2011

Похоже, opencmd.bat выполняется, поэтому, если ваш сценарий PowerShell работает, возможно, у вас нет административных привилегий ?

ВыЯ также могу сделать это элегантно, используя JNA, я думаю, что это будет целью.Но если вы торопитесь, не беспокойтесь.

...