试图用Java重命名计算机或执行.bat文件

试图用Java重命名计算机或执行.bat文件,java,windows,batch-file,rename,Java,Windows,Batch File,Rename,我正试图编写一个脚本来重命名一台计算机(除其他外),但似乎无法理解。我真的不在乎我用什么方法来改变电脑,只要我能改变它。我通过这样做了解了如何读取计算机名 String computername = InetAddress.getLocalHost().getHostName(); 但是,这似乎对设置计算机名没有任何帮助。有没有办法直接在java控制台中设置计算机名 如果没有,或者如果有人在这方面有更好的经验,我还使用powershell 2.0编写了一个脚本来重命名计算机。我想知道如何使用

我正试图编写一个脚本来重命名一台计算机(除其他外),但似乎无法理解。我真的不在乎我用什么方法来改变电脑,只要我能改变它。我通过这样做了解了如何读取计算机名

String computername = InetAddress.getLocalHost().getHostName();
但是,这似乎对设置计算机名没有任何帮助。有没有办法直接在java控制台中设置计算机名

如果没有,或者如果有人在这方面有更好的经验,我还使用powershell 2.0编写了一个脚本来重命名计算机。我想知道如何使用

 Runtime rt = Runtime.getRuntime();
 Process proc = rt.exec("file location");
我遵循了指南,但在尝试运行一个test.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字符和空格。如果它包含空格,则用引号将其括起来。你试试看。我希望这不会给你带来麻烦

您还可以使用ProcessBuilder类,该类允许更好、更可移植的参数传递


祝你好运

看起来像是执行了opencmd.bat,所以假设您的PowerShell脚本正常工作,您是否可能没有


您也可以使用JNA优雅地完成它,我认为这将是目标。但是如果您赶时间,请不要麻烦。

我不确定您的链接指向Gnon的是什么,但您是对的,我需要以管理员身份运行脚本,否则我将无法成功更改计算机名。我绞尽脑汁想弄清楚如何以管理员的身份运行这个脚本,我找不到在CMD行、powershell或java中以提升权限运行任何东西的方法。使用sudo命令会很简单…哦,因为这需要完全自动,我不能右键单击并以管理员身份运行,甚至不能提示用户进行身份验证,我需要能够在脚本中或通过命令行获得提升的权限。你能使用bat文件中的参数-runas吗?谢谢AlexR,我已经有脚本要运行了,但我仍在试图找出如何以更高的权限运行它,而且在任何地方都找不到方法。有什么想法吗?