Batch file 使用Set命令从本地系统变量编写批处理程序

Batch file 使用Set命令从本地系统变量编写批处理程序,batch-file,Batch File,我需要编写一个程序,显示计算机名、用户名和用户文件路径。所有这些都应取自局部系统变量。有人暗示我应该使用set命令,但是,我不确定在这种情况下如何使用set命令。。。我假设我可以使用echo%COMPUTERNAME%等。如何实现set命令?我猜关于set命令的提示是,您可以使用它的输出来帮助您识别批处理文件中使用的本地系统变量,并不是说您需要使用Set来输出它们 在命令提示下输入Set时,您将获得显示每个已定义系统变量的输出 此外,如果在提示下输入Set ComputerName,您将获得显示

我需要编写一个程序,显示计算机名、用户名和用户文件路径。所有这些都应取自局部系统变量。有人暗示我应该使用
set
命令,但是,我不确定在这种情况下如何使用set命令。。。我假设我可以使用
echo%COMPUTERNAME%
等。如何实现set命令?

我猜关于
set
命令的提示是,您可以使用它的输出来帮助您识别批处理文件中使用的本地系统变量,并不是说您需要使用
Set
来输出它们

在命令提示下输入
Set
时,您将获得显示每个已定义系统变量的输出

此外,如果在提示下输入
Set ComputerName
,您将获得显示以字符串
ComputerName
开头的所有变量的输出

因此,根据
Set
命令的输出,您可以
Echo
,将批处理文件中的三个变量如下所示:

@Echo关闭
回显%ComputerName%
回显%UserName%
回显%UserProfile%
您还可以包括变量及其值:

@Echo关闭
Echo%%ComputerName%%=%ComputerName%
Echo%%UserName%%=%UserName%
Echo%%UserProfile%%=%UserProfile%

您也可以考虑在批处理文件中运行<<代码>循环,以使用<代码> SET命令直接显示相同的内容:

@Echo关闭
对于(计算机名、用户名、用户配置文件)中的%%A,请设置%%A
暂停
或者,您可以使用嵌套的
For
循环中的
Set
Echo
仅返回它们的值:

@Echo关闭
对于%%A In(计算机名、用户名、用户配置文件)执行以下操作(
对于/F“代币=1*Delims==”('Set%%A')中的%%B做回显%%C)
暂停

要按字面意思回答问题(“使用
set
命令显示计算机名…”,请执行以下操作:

输出如下:

COMPUTERNAME=Elon-PC
USERNAME=Muscrat
USERPROFILE=C:\Users\Muskrat
(Compo在他的答案中已经有了这个方法,但我猜使用
for
命令超出了课程当前状态的界限)


(注意:对于实际使用,在大多数情况下,Compo的答案(使用变量)更好,因为在实践中,您可能会对值执行一些操作,而不是“仅仅”显示它们,而是字面上回答您的问题)

当您在命令提示下输入
Set
时会发生什么?我猜这个提示是为了让你可以使用输出,来帮助你完成所需的命令,而不是你需要使用
Set
来输出它们,技术上你也可以这样做。哦,我的上帝。你绝对是对的。我甚至没有考虑SET命令做了什么。非常感谢你消除了我的误解。没问题!如果你在提示符下输入<代码>设置计算机名会发生什么,然后考虑在这个提示符下运行这个简单的<>代码> 循环,<代码> %A(计算机名,用户名,用户配置文件)做@集%A<代码>,这也很好。这更符合我的想法。谢谢你的回答!
COMPUTERNAME=Elon-PC
USERNAME=Muscrat
USERPROFILE=C:\Users\Muskrat