У меня есть следующее для цикла внутри командного файла:
for /l %%x in (1, 1, %k%) do (
set "psCommand=powershell -Command "$pword = read-host 'Enter Password2' -AsSecureString ; $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%p
)
И я всегда получаю следующую ошибку: [System.Runtime.InteropServices.Marshal] :: PtrToStringAuto ($ BSTR) "" был неожиданным в это время.
Когда я запускаю команду вне цикла for, она работает.
Что случилось?
windows
command-line
batch
powershell
batch-file
user1563721
источник
источник
set
и один для-Command
и они, вероятно, отменяют друг друга.Ответы:
Проблема в том, что цикл for считает, что конечная скобка находится внутри команды powershell.
Возможное решение - создать функцию и вызвать ее из цикла:
источник