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

Windows批处理-从cmd命令读取结果并保存到变量,windows,batch-file,cmd,Windows,Batch File,Cmd,我想读取设备的主机名并生成一个具有此名称的文件。然而,我是Windows批处理的新手,我甚至不知道如何使用这些变量,读取文件 以下是我想做的: 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 >

我想读取设备的主机名并生成一个具有此名称的文件。然而,我是Windows批处理的新手,我甚至不知道如何使用这些变量,读取文件

以下是我想做的:

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
它似乎不成功

增加:
我想用主机名创建一个文件。例如,如果我的主机名是“abc”,它将输出一个类似“abc.csv”的文件。

您可以通过两种方式获得它:

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

echo %COMPUTERNAME% > hostname_file.txt
或者,您可以先将其存储在另一个变量中,然后将该变量的内容回显到文件中:

set myHostName=%HOSTNAME%
echo %myHostName% > hostname_file.txt
hostname > hostname_file.txt
另一种方法是运行hostname.exe程序,该程序打印当前计算机名,并将输出重定向到文件:

set myHostName=%HOSTNAME%
echo %myHostName% > hostname_file.txt
hostname > hostname_file.txt
运行hostname.exe并将结果存储在变量中比较困难,您需要滥用for循环来实现这一点:

for /f %f in ('hostname') do set myHostName=%f
echo %myHostName% > hostname_file.txt
注意:您所做的并不是您如何描述它-文件与变量不是一回事:

你写道:

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总是在那里查找要运行的程序。
>
正在添加到文件的末尾。如果文件存在,它不会始终创建新文件,
将始终创建一个新文件,如果已经存在,将覆盖它。一旦它将输出发送到文件,它就不在变量中。

echo%computername%>newfile.txt
。键入
set
以查看变量列表。我是否澄清了一些问题,我甚至不知道如何将cmd结果保存到变量中(CMD.EXE hostname>>hostname_variable)我在上面向您展示了。
echo%computername%>%computername%.csv
。一行,就这样。谢谢您的详细评论。但是,我想创建一个名为hostname的文件。例如,如果我的主机名是“abc”,它将以“abc.csv”的形式输出一个文件类似于此的内容。对此有何评论?请尝试
echo 1,2,3>“%COMPUTERNAME%.csv”
谢谢=]想知道在哪里检查“%COMPUTERNAME%”之类的命令吗
SET
在命令提示下将打印所有环境变量,只有少数。
SET/?
将显示对它们的帮助,是的,对于%DATE%、%TIME%和%RANDOM%有一些特殊的帮助,它们没有显示在列表中,但您仍然可以使用它们。哇,太棒了,XDD非常感谢=]