5

Я хочу иметь переменную среды, которая содержит день недели в 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

Моя цель - использовать переменную в командном файле для некоторых сценариев резервного копирования.

3 ответа3

3

Чтобы сделать это без временного файла, вы можете сделать:

@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, чтобы увидеть изменения.

0

Я не верю, что вы не можете сделать это напрямую, но вы можете использовать временный файл для хранения результата и импортировать его обратно в переменную:

@echo off
powershell (get-date).dayofweek > myTmpFile
set /p dow= < myTmpFile
del /q myTmpFile
echo %dow%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .