Ocorreu um problema ao usar a saída do powershell como uma variável no arquivo de lote

2

Eu posso executar manualmente este comando a partir de um prompt de comando do Windows:

powershell (new-timespan -start 01/01/2000 -end (get-date)).days % 14

E ele retorna um número de 0 a 13. Eu quero usar este resultado em um arquivo de lote, mas esta linha retorna um erro:

for /f %%i in ('powershell (new-timespan -start 01/01/2000 -end (get-date)).days % 14') do set doc=%%i

O erro:

).days was unexpected at this time.

Eu suspeito que eu precise adicionar mais aspas, aspas duplas, apóstrofos e colchetes, mas eu tentei todas as combinações possíveis e não consegui fazê-lo funcionar. Eu acho que talvez alguns ^ ^ s também sejam necessários?

    
por pigeonpigeon 21.07.2016 / 15:59

1 resposta

2

No comando FOR você precisa escapar não apenas dos parênteses, mas também do mod (por cento). Os parênteses escapam com ^ , a porcentagem em % . Observe que isso só funcionará em um arquivo em lotes, não na linha de comando.

FOR /F %%i IN ('powershell ^(new-timespan -start 01/01/2000 -end ^(get-date^)^).days %% 14') DO (
    SET doc=%%i
)

ECHO %doc%
    
por 21.07.2016 / 16:33