簡體   English   中英

嘗試重命名計算機或在Java中執行.bat文件

[英]Trying to rename a computer OR execute a .bat file in Java

我正在嘗試編寫一個腳本來重命名計算機(除其他外),但似乎無法弄清楚。 只要我可以更改計算機,我都不在乎我用什么方法來更改計算機。 我發現如何通過執行以下操作讀取計算機名稱

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

但是,這似乎對設置計算機名稱沒有任何幫助。 有沒有一種方法可以直接在Java控制台中設置計算機名稱?

如果沒有,或者如果有人在這方面有更好的經驗,我還使用Powershell 2.0編寫了一個腳本,該腳本重命名了計算機。 我試圖弄清楚如何使用

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

我在這里遵循了指南但是當嘗試運行應該僅打開命令行的測試.bat文件時,我只是在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行。

我非常感謝您在這里忙碌的時間中的投入,謝謝!

首先,JDK確實沒有提供允許更改計算機名稱的純Java API。 因此,您必須運行腳本。

其次,如果要使用運行時運行腳本,則必須提供正確的命令行。 因此,首先嘗試手動運行腳本。 我相信它接受至少一個參數(新計算機名稱)。 因此,從命令提示符處運行它,然后查看它是否正在運行。 然后將其放在Java程序的工作目錄中,然后將命令行復制/粘貼到Java代碼中,以查看其現在是否正常運行。 如果您願意,可以閱讀腳本的STDOUT和/或獲取其返回代碼。 如果您不關心其輸出,則只需調用process.waitFor(),然后獲取返回代碼。

注意參數。 Windows計算機名稱可能包含Unicode字符和空格。 如果包含空格,請用引號將其引起來。 關於unicode,請嘗試。 我希望它不會對您造成問題。

您還可以使用ProcessBuilder類,該類允許更好和更可移植的參數傳遞。

祝好運。

似乎正在執行opencmd.bat ,因此,假設您的PowerShell腳本有效,是否沒有管理權限

您也可以使用JNA優雅地做到這一點,我認為將是目標。 但是,如果您趕時間,請不要打擾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM