我想要一个包含 cmd.exe 中的星期几的环境变量。
当我运行此命令时,我得到了我想要的结果。
C:\Users\tisc>powershell (get-date).dayofweek
Friday
这里我尝试将结果存储在环境变量中。
C:\Users\tisc>set dow = powershell (get-date).dayofweek
但是当我尝试获取它时我并没有得到我想要的字符串。
C:\Users\tisc>set dow
DoW=0
dow = powershell (get-date).dayofweek
我的目标是在某些备份脚本的批处理文件中使用该变量。
答案1
若要在没有临时文件的情况下执行此操作,您可以执行以下操作:
@ECHO off
FOR /F %%i in ('powershell.exe -noprofile "(get-date).DayOfWeek"') DO SET dow=%%i
ECHO Day of week %dow%
PAUSE
从命令提示符中删除双重 %%:
FOR /F %i in ('powershell.exe -noprofile "(get-date).DayOfWeek"') DO SET dow=%i
-noprofile
如果您为 PowerShell 设置了配置文件,使用将使其运行得更快。
答案2
powershell -noprofile -command {[environment]::SetEnvironmentVariable("dow", (get-date).DayofWeek, "User")}
显然您需要打开其他 cmd 才能看到更改。
答案3
我不相信你不能直接做到这一点,但你可以使用临时文件来保存结果,然后将其导入回变量:
@echo off
powershell (get-date).dayofweek > myTmpFile
set /p dow= < myTmpFile
del /q myTmpFile
echo %dow%