Почему GetStandardStream в mshta не работает напрямую, но работает в for?
Попробуй это:
for /f "usebackq delims=" %a in (`mshta "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write('Hello World');close()"`) do @echo //%a//
Или это:
mshta "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write('Hello World');close()" | for /f "delims=" %a in ('findstr "^"') do @echo //%a//
Ты получаешь
//Hello World//
Но если вы попробуете команду backquoted напрямую, вы получите ошибку.
mshta "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write('Hello World');close()"
Разве последняя команда не должна выводить ту же строку, но в стандартном выводе? Зачем мне for /f
? Не for
просто получите вывод команды с кавычками и назначьте ее %a
?