Я пытался создать прокручивать список для пакетного файла, используя метод нашел здесь: Scrollable Lists in .bat Files Кредит на https://stackoverflow.com/users/778560/aaciniwshShell и WMIC работают вместе в пакетном режиме?
Один я попытался добавить обратно в моем коде для моей очередной партии несколько строк в то время, я заметил, что решение не работает, когда я использую WMIC. В чем причина этого и есть ли легкое решение? Вы можете запустить приведенный ниже код, а затем не комментировать строку WMIC и увидеть, что она больше не будет работать.
Редактировать: Я пользуюсь Windows 7
Спасибо!
@if (@CodeSection == @Batch) @then
@echo off
setlocal EnableDelayedExpansion
color F0
::FOR /F "tokens=2 delims==" %%A IN ('WMIC csproduct GET Name /VALUE ^| FIND /I "Name="') DO SET machine=%%A
Echo Reset or Continue
Set MenuOptions=RESET Continue
call :ShowMenu
pause
exit
:ShowMenu
set numOpts=0
for %%a in (%MenuOptions%) do (
set /A numOpts+=1
set "option[!numOpts!]=%%a"
)
rem Clear previous doskey history
doskey /REINSTALL
rem Fill doskey history with menu options
cscript //nologo /E:JScript "%~F0" EnterOpts
for /L %%i in (1,1,%numOpts%) do set /P "var="
rem Send a F7 key to open the selection menu
cscript //nologo /E:JScript "%~F0"
set /P "MenuSelected=Option Selected: "
echo/
@end
var wshShell = WScript.CreateObject("WScript.Shell"),
envVar = wshShell.Environment("Process"),
numOpts = parseInt(envVar("numOpts"));
if (WScript.Arguments.Length) {
// Enter menu options
for (var i=1; i <= numOpts; i++) {
wshShell.SendKeys(envVar("option["+i+"]")+"{ENTER}");
}
} else {
// Enter a F7 to open the menu
wshShell.SendKeys("{F7}");
}
Единственная причина я вижу для него, чтобы не работать при вызове 'wmic' является то, что может быть ваш командный файл называется 'wmic.bat' или' wmic.cmd', и он сам вызывает вызов. Также обратите внимание, что вам не хватает 'goto: eof' непосредственно перед строкой' @ end' –
Я могу подтвердить это измененное поведение, т. Е. Меню не отображается даже с другим исполняемым файлом вместо 'wmic'. Протестировано, например. 'findstr/N" wshShell "% ~ f0' (Windows 8.1). – JosefZ
@JosefZ, протестирован на Windows 10 64 и Windows 7 32.В обоих случаях опубликованный код показывает меню, но 'doskey/reinstall' не очищает историю предыдущих команд с помощью или без' wmic' –