Windows批处理 - 从cmd命令读取结果并保存到变量

时间:2014-07-16 01:19:39

标签: windows batch-file cmd

我想读取设备的主机名并生成一个具有此名称的文件。但是,我是Windows Batch的新手,我甚至不懂如何使用那些变量,读取文件......

这是我想要做的:

CD C:\WINDOWS\SYSTEM32\
CMD.EXE hostname -> to a HostName variable e.g. called abc ::I hope it will save my computer name to a variable string
echo It success to function >> C:\%abc%.txt :: I hope it can generate a file with the sting in variable
PAUSE

我原以为如果它不是cmd命令的功能,那么我尝试了替代方法:

CD C:\WINDOWS\SYSTEM32\
CMD.EXE hostname >> C:\HostName.tmp
-AND THEN READ BACK the C:\HostName.tmp Here
-And then save to a variable again e.g. 
echo It success to function >> C:\HostName_variable.txt ::It generate a file with the sting in variable
PAUSE

似乎没有成功= [。

添加了: 我想创建一个名为hostname的文件。例如如果我的主机名是" abc",它将输出一个文件为" abc.csv"像这样的东西。

1 个答案:

答案 0 :(得分:2)

你可以通过两种方式获得:

环境变量是一些包含一般系统状态的预配置变量,其中一个是COMPUTERNAME,您可以直接将其发送到以下文件:

echo %COMPUTERNAME% > hostname_file.txt

或者您可以将其存储在另一个变量中,首先,然后将该变量的内容回显到文件:

set myHostName=%HOSTNAME%
echo %myHostName% > hostname_file.txt

另一种方法是运行hostname.exe程序,该程序打印当前计算机名称,并将输出重定向到文件:

hostname > hostname_file.txt

运行hostname.exe并将结果存储在变量中更加困难,您需要滥用for循环来执行此操作:

for /f %f in ('hostname') do set myHostName=%f
echo %myHostName% > hostname_file.txt

NB。你在做什么并不是你如何描述它 - 文件与变量不同:

你写道:

CD C:\WINDOWS\SYSTEM32\
CMD.EXE hostname >> HostName_variable ::It will save my computer name to a variable string
echo It success to function >> C:\HostName_variable.txt ::It generate a file with the string in variable
PAUSE

cmd.exe是不必要的,因为您在运行它时已经在命令提示符中,您不需要运行另一个。您不需要首先更改为c:\ windows \ system32,因为Windows始终在那里查找要运行的程序。 >>正在添加到文件末尾(如果存在),它不会始终创建新文件,>将始终创建新文件,如果已经存在,将覆盖它。一旦将输出发送到文件,它就不在变量中。