Windows批处理 – 从cmd命令读取结果并保存到variables

我想读取我的设备的主机名,并生成一个这样的名字的文件。 但是,我在Windows批处理新,我甚至不知道如何使用这些variables,阅读文件……

这是我想要做的:

CD C:\WINDOWS\SYSTEM32\ CMD.EXE hostname -> to a HostName variable eg 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命令的function,那么我尝试了另一种方法:

 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 eg echo It success to function >> C:\HostName_variable.txt ::It generate a file with the sting in variable PAUSE 

这似乎不成功= [。

补充:我想创build一个名为hostname的文件。 例如,如果我的主机名是“abc”,它会输出一个像“abc.csv”这样的文件。

你可以通过两种方式得到它:

环境变量是包含一般系统状态的一些预配置变量,其中一个是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总是在那里寻找要运行的程序。 >>如果存在,则将其添加到文件末尾,但不会总是创建新文件, >将始终创建新文件,如果已经存在,则会覆盖该文件。 一旦它将输出发送到一个文件,它不是在一个变量。