我试图使用这里找到的方法Scrollable Lists in .bat Files为批处理文件创建可滚动列表。
感谢https://stackoverflow.com/users/778560/aacini。
当我尝试逐行添加我的常规批处理代码时,我发现当我使用WMIC时,该解决方案不起作用。这是什么原因,是否有简单的解决方案?您可以运行下面的代码,然后取消注释WMIC行,看看它将不再起作用。
编辑:我正在使用Windows 7
谢谢!
当我尝试逐行添加我的常规批处理代码时,我发现当我使用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}");
}
doskey /reinstall
无论是否使用wmic
都不能清除先前命令的历史记录。 - MC NDcmd
提示符中调用批处理。D:\ bat \ SO \ 40165693.bat
不会显示菜单,而CMD / C D:\ bat \ SO \ 40165693.bat
可以完美运行... @MCND我可以确认,当在第二次及以后运行D:\ bat \ SO \ 40165693.bat
时(没有WMIC
),doskey / reinstall
不会清除先前命令的历史记录。 - JosefZ