“for”中的变量在获得正确值后返回空值——将 Windows 批处理文件变量设置为 for 中的星期几

问题描述

我有一个每天运行的 Windows 批处理文件。希望创建一个具有确切格式名称文件夹。 我想在文件名称显示工作日,然后就会出现一些棘手的事情:

E:\tricks>for /F "skip=1" %a IN ('WMIC Path Win32_LocalTime Get DayOfWeek') do set var=%a

E:\tricks>set var=5

 :\tricks>set var=

E:\tricks>set /p b=Name:
Name:

似乎变量“var”已经获得了值“5”,这意味着“星期五”,但随后变量“var”又变成了“null”。有人可以帮我吗?非常感谢!

代码如下:

for /f "skip=1" %%a IN ('WMIC Path Win32_LocalTime Get DayOfWeek' ) do (set var=%%a)

set /p b=Name:
set mydt=(!)%DATE:~,10%("%var%")《" %b%"》
md %mydt:/=-%

解决方法

你观察一个for循环的输出,当你看到两个赋值时,那么FOR循环两次,因为wmic命令的输出有一个特殊的行尾。

您可以通过在第一次分配后打破循环来修复它。

for /f "skip=1" %%a IN ('WMIC Path Win32_LocalTime Get DayOfWeek' ) do (
    set var=%%a
    goto :break
)
:break