我想将此/bin/sh
语法转换为广泛兼容的Windows批处理脚本:
host=`hostname`
echo ${host}
如何执行此操作以便它可以在任何Windows Vista,Windows XP和Windows 2000计算机上运行?
澄清一下:我想继续在程序中使用存储在变量host
中的主机名。换句话说,该计划的更大目标不是简单地回显主机名。
答案 0 :(得分:55)
set host=%COMPUTERNAME%
echo %host%
编辑:扩展抖动的答案并在this question的答案中使用一种技术来设置环境变量,并运行命令行应用程序的结果:
@echo off
hostname.exe > __t.tmp
set /p host=<__t.tmp
del __t.tmp
echo %host%
在任何一种情况下,'host'都是作为环境变量创建的。
答案 1 :(得分:53)
我通常使用FOR
命令将命令输出读入变量,因为它节省了创建临时文件的时间。例如:
FOR /F "usebackq" %i IN (`hostname`) DO SET MYVAR=%i
注意,上述语句可以在命令行中使用,但不能在批处理文件中使用。要在批处理文件中使用它,请将%
语句中的FOR
放两次:
FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i
ECHO %MYVAR%
您可以使用FOR
做更多事情。有关更多详细信息,请在命令提示符下键入HELP FOR
。
答案 2 :(得分:11)
我正在使用环境变量COMPUTERNAME
:
copy "C:\Program Files\Windows Resource Kits\Tools\" %SYSTEMROOT%\system32
srvcheck \\%COMPUTERNAME% > c:\shares.txt
echo %COMPUTERNAME%
答案 3 :(得分:5)
为什么不这样?:
set host=%COMPUTERNAME%
echo %host%
答案 4 :(得分:0)
只需使用
行创建一个.bat文件hostname
在里面。而已。 Windows还支持hostname命令。
答案 5 :(得分:-1)
set host=%COMPUTERNAME%
echo %host%
这个够了。不需要额外的大编码循环。