Como eu defino uma variável de ambiente a partir de um comando powershell?

5

Eu quero ter uma variável de ambiente que contenha o dia da semana no cmd.exe.

Quando eu executo este comando, recebo o resultado que quero.

C:\Users\tisc>powershell (get-date).dayofweek
Friday

Aqui estou tentando armazenar o resultado em uma variável de ambiente.

C:\Users\tisc>set dow = powershell (get-date).dayofweek

Mas quando eu tento entender não entendo a string como queria.

C:\Users\tisc>set dow
DoW=0
dow = powershell (get-date).dayofweek

Meu objetivo é usar a variável em um arquivo em lotes para alguns scripts de backup.

    
por Tim 13.01.2012 / 10:59

3 respostas

3

Para fazer isso sem um arquivo temporário, você pode fazer:

@ECHO off
FOR /F %%i in ('powershell.exe -noprofile "(get-date).DayOfWeek"') DO SET dow=%%i
ECHO Day of week %dow%
PAUSE

do prompt de comando, remova o duplo %%:

FOR /F %i in ('powershell.exe -noprofile "(get-date).DayOfWeek"') DO SET dow=%i

Usar -noprofile fará com que seja mais rápido se você tiver um perfil configurado para o PowerShell.

    
por 13.01.2012 / 19:01
2
powershell -noprofile -command {[environment]::SetEnvironmentVariable("dow", (get-date).DayofWeek, "User")}

Obviamente, você precisa abrir outro cmd para ver a mudança.

    
por 16.01.2012 / 16:42
0

Não acredito que você não possa fazer isso diretamente, mas você pode usar um arquivo temporário para armazenar o resultado e importá-lo de volta para a variável:

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