Consegui que isso funcionasse conforme o esperado, conforme você descreve canalizando a lógica do script PowerShell dentro do script em lote para um arquivo temp PS1
e, em seguida, usando um FOR / F para obter o resultado do script PowerShell executado para subtrair o número de dias da data atual em e salve esse resultado como uma variável para usar no script em lote para suas necessidades ( %leaf%
) depois.
Observe que tive que dobrar os sinais de porcentagem no PowerShell -format "%%Y%%m%%d"
para garantir que esses símbolos sejam usados como caracteres literais e não como caracteres especiais pelo script em lote.
Escaping Percents
The % character has a special meaning for command line parameters and FOR parameters.
To treat a percent as a regular character, double it:
%%
Script em lote
@ECHO ON
:DynamicPSScriptBuild
SET PSScript=%temp%\~tmp%~n0.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO get-date((get-date).addDays(-1)) -uformat "%%Y%%m%%d">>"%PSScript%"
FOR /F "DELIMS=" %%I IN ('Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"') DO SET "leaf=%%I"
echo %leaf% >> uploadsp.txt
EXIT