首页 > 编程 > BAT > 正文

windows xp下没有dos的choice命令的解决方法

2020-03-29 19:51:37
字体:
来源:转载
供稿:网友

dos6.0下能实现的choice选项,但是因为choice是外部命令,在xp中没有choice.exe所以不能实现选择菜单。解决办法:用SET命令代替

set 命令详解                                                                                                          

在批处理中回显信息有两个命令,echo和set /p=<nul,它们的共同点在于都是对程序执行信
息的屏幕输出,区别在于echo是换行输出,而set /p=<nul是不换行追回输出,这样说大家可能
不是很理解,下面给出两个代码来进行比较:

代码:

@echo offecho bathomeecho batmanpause>nul

代码:

@echo offset /p=bathome<nulset /p=batman<nulpause>nul

运行这两段代码,大家看到第一段的结果是分两行依次在屏幕上输出了bathome
和batman,而第二段的结果是在一行中依次输出了bathome和batman,大家再仔细点还可看到光
标所处的位置也不一样。好了,就讲到这里吧。

一、set的主要作用是赋值
1、set /p a=promptstring
先显示promptstring,再接受用户输入的内容,以回车表示结束,赋值给变量a

2、set /p a=promptstring<1.txt
先显示promptstring,再把"<"管道号右边的1.txt文件中从第一个字符开始直到碰到回车符的内容赋值给变量a (通常表现为第一行)。

3、set /p a=promptstring<nul
先显示promptstring,再把"<"管道号右边nul中内容赋值给变量a ,不用用户按回车就结束语句。因nul是空设备,故没有内容可赋值,变量a仍属未定义。

二、因为在接受用户输入前可先显示promptstring,故此set还可当作显示命令用(仅作为显示命令使用时,可省略变量a)
1、set /p =promptstring
显示promptstring,再接受用户输入的内容,以回车表示结束。如用户直接按回车则仅显示promptstring。(赋值给空变量,赋值意义已丧失,仅作显示之用,需用户按回车键结束语句,无多大实际用途)

2、set /p =promptstring<1.txt
先显示promptstring,再把"<"管道号右边的1.txt文件中从第一个字符开始直到碰到回车符的内容赋值给空变量(无实际用途)

3、set /p =promptstring<nul
先显示promptstring,再把"<"管道号右边nul中内容赋值给空变量,不用用户按回车就结束语句,实际中常用这个句式作为显示语句。因显示promptstring后光标不换行,故实际中这个句式用到很多。如2楼所述,还有光标退格等。

以下是补充:

显示、设置或删除 cmd.exe 环境变量。

SET [variable=[string]]
variable 指定环境变量名。
string 指定要指派给变量的一系列字符串。

要显示当前环境变量,键入不带参数的 SET。

如果命令扩展被启用,SET 会如下改变:
可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配SET 命令已使用的名称的所有变量的值。
例: SET P
会显示所有以字母 P 打头的变量
如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL设置成 1。
SET 命令不允许变量名含有等号。

在 SET 命令中添加了两个新命令行开关:
SET /A
SET /P variable=[promptString]

/A 命令行开关指定等号右边的字符串为被评估的数字表达式。
除十六进制有 0x 前缀,八进制有 0 前缀的,数字值为十进位数字。因此,0x12 与 18 和 022 相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,因为 8 和 9 不是有效的八进制位数。

/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。

%PATH:~10,5%
会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏移量 10)字符开始的五个字符。如果没有指定长度,则采用默认值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,使用的数字则是环境变量数值长度加上指定的偏移量或长度。

%PATH:~-10%
会提取 PATH 变量的最后十个字符。

%PATH:~0,-2%
会提取 PATH 变量的所有字符,除了最后两个。


如果命令扩展被启用,有几个动态环境变量可以被扩展,但不会出现在 SET 显示的变量列表中。每次变量数值被扩展时,这些变量数值都会被动态计算。如果用户用这些名称中任何一个定义变量,那个定义会替代下面描述的动态定义:

í% - 扩展到当前目录字符串。

úTE% - 用跟 DATE 命令同样的格式扩展到当前日期。

%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。

%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。

%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。

%CMDEXTVERSION% - 扩展到当前命令处理器扩展版本号。

%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。

应用例子:

@echo offtitle Windows Xp 优化文件!                                                                      :startclscolor 0cMODE con: COLS=50 LINES=27echo Windows Xp 优化文件!echo Powered By ThunderRay!echo.echo ==============================echo 请选择要进行的操作,然后按回车echo ==============================echo.echo 1.优化系统服务echo.echo 2.进行端口操作echo.echo 3.设置IP为192.168.1.2echo.echo (局域网上网者慎用此功能)echo.echo 4.其它优化echo.echo 5.设置OEM信息echo.echo 6.清除根目录下的SXS病毒echo.echo 7.清理系统垃圾echo.echo 8.退出echo.:choset choice=set /p choice= 请选择:IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%if /i "%choice%"=="1" goto start2if /i "%choice%"=="2" goto start3if /i "%choice%"=="3" goto ipif /i "%choice%"=="4" goto otherif /i "%choice%"=="5" goto oemif /i "%choice%"=="6" goto virusif /i "%choice%"=="7" goto delif /i "%choice%"=="8" goto endecho 选择无效,请重新输入echo.goto cho:start2clsecho Windows Xp 优化文件!echo Powered By ThunderRay!echo.echo ==============================echo 请选择要进行的操作,然后按回车echo ==============================echo.echo 1.优化XP系统服务echo.echo 2.恢复XP原系统服务echo.echo 3.返回主菜单echo.echo 4.退出echo.:Choice2set choice2=set /p choice2= 请选择:IF NOT "%Choice2%"=="" SET Choice2=%Choice2:~0,1%if /i "%choice2%"=="1" goto optimizeif /i "%choice2%"=="2" goto Restoreif /i "%choice2%"=="3" goto startif /i "%choice2%"=="4" goto endecho 选择无效,请重新输入echo.goto Choice2:optimizeclsecho 开始进行优化系统服务...sc config Alerter start= DISABLEDsc config ALG start= DISABLEDsc config AppMgmt start= DEMANDsc config AudioSrv start= AUTOsc config BITS start= DEMANDsc config Browser start= DISABLEDsc config CiSvc start= DISABLEDsc config ClipSrv start= DISABLEDsc config COMSysApp start= DEMANDsc config CryptSvc start= DEMANDsc config DcomLaunch start= AUTOsc config Dhcp start= DISABLEDsc config dmadmin start= DEMANDsc config dmserver start= DISABLEDsc config Dnscache start= DISABLEDsc config ERSvc start= DISABLEDsc config Eventlog start= AUTOsc config EventSystem start= DISABLEDsc config FastUserSwitchingCompatibility start= DISABLEDsc config helpsvc start= DISABLEDsc config HidServ start= DISABLEDsc config HTTPFilter start= DEMANDsc config ImapiService start= DISABLEDsc config lanmanserver start= DISABLEDsc config lanmanworkstation start= AUTOsc config LmHosts start= DISABLEDsc config Messenger start= DISABLEDsc config mnmsrvc start= DISABLEDsc config MSDTC start= DISABLEDsc config MSIServer start= DEMANDsc config NetDDE start= DISABLEDsc config NetDDEdsdm start= DISABLEDsc config Netlogon start= DISABLEDsc config Netman start= DEMANDsc config Nla start= DISABLEDsc config NtLmSsp start= DISABLEDsc config NtmsSvc start= DEMANDsc config Nvsvc start= DISABLEDsc config Ose start= DEMANDsc config PlugPlay start= AUTOsc config PolicyAgent start= DISABLEDsc config ProtectedStorage start= DISABLEDsc config RasAuto start= DEMANDsc config RasMan start= DEMANDsc config RDSessMgr start= DISABLEDsc config RemoteAccess start= DISABLEDsc config RemoteRegistry start= DISABLEDsc config RpcLocator start= DEMANDsc config RpcSs start= AUTOsc config SamSs start= DISABLEDsc config SCardSvr start= DISABLEDsc config Schedule start= DISABLEDsc config seclogon start= DISABLEDsc config SENS start= DISABLEDsc config SharedAccess start= DISABLEDsc config ShellHWDetection start= DISABLEDsc config Spooler start= DEMANDsc config srservice start= DISABLEDsc config SSDPSRV start= DISABLEDsc config Stisvc start= DISABLEDsc config Swprv start= DISABLEDsc config SysmonLog start= DISABLEDsc config TapiSrv start= DEMANDsc config TermService start= DISABLEDsc config Themes start= AUTOsc config TlntSvr start= DISABLEDsc config TrkWks start= DISABLEDsc config UMWdf start= DISABLEDsc config upnphost start= DEMANDsc config UPS start= DISABLEDsc config VSS start= DISABLEDsc config W32Time start= DISABLEDsc config WebClient start= DISABLEDsc config winmgmt start= AUTOsc config WmdmPmSN start= DISABLEDsc config Wmi start= DEMANDsc config WmiApSrv start= DISABLEDsc config wuauserv start= DISABLEDsc config WZCSVC start= DISABLEDsc config wscsvc start= DISABLEDsc config xmlprov start= DEMANDecho 优化XP系统服务结束,按任意键返回!pause >nulgoto start2:Restoreclsecho 开始恢复XP原系统服务...sc config Alerter start= DISABLEDsc config ALG start= DEMANDsc config AppMgmt start= DEMANDsc config AudioSrv start= AUTOsc config BITS start= DEMANDsc config Browser start= AUTOsc config CiSvc start= DEMANDsc config ClipSrv start= DISABLEDsc config COMSysApp start= DEMANDsc config CryptSvc start= AUTOsc config DcomLaunch start= AUTOsc config Dhcp start= AUTOsc config dmadmin start= DEMANDsc config dmserver start= AUTOsc config Dnscache start= AUTOsc config ERSvc start= AUTOsc config Eventlog start= AUTOsc config EventSystem start= DEMANDsc config FastUserSwitchingCompatibility start= DEMANDsc config helpsvc start= AUTOsc config HidServ start= DISABLEDsc config HTTPFilter start= DEMANDsc config ImapiService start= DEMANDsc config lanmanserver start= AUTOsc config lanmanworkstation start= AUTOsc config LmHosts start= AUTOsc config Messenger start= DISABLEDsc config mnmsrvc start= DEMANDsc config MSDTC start= DEMANDsc config MSIServer start= DEMANDsc config NetDDE start= DISABLEDsc config NetDDEdsdm start= DISABLEDsc config Netlogon start= DEMANDsc config Netman start= DEMANDsc config Nla start= DEMANDsc config NtLmSsp start= DEMANDsc config NtmsSvc start= DEMANDsc config PlugPlay start= AUTOsc config PolicyAgent start= AUTOsc config ProtectedStorage start= AUTOsc config RasAuto start= DEMANDsc config RasMan start= DEMANDsc config RDSessMgr start= DEMANDsc config RemoteAccess start= DISABLEDsc config RemoteRegistry start= AUTOsc config RpcLocator start= DEMANDsc config RpcSs start= AUTOsc config RSVP start= DEMANDsc config SamSs start= AUTOsc config SCardSvr start= DEMANDsc config Schedule start= AUTOsc config seclogon start= AUTOsc config SENS start= AUTOsc config SharedAccess start= AUTOsc config ShellHWDetection start= AUTOsc config Spooler start= AUTOsc config srservice start= DISABLEDsc config SSDPSRV start= DEMANDsc config stisvc start= DEMANDsc config SwPrv start= DEMANDsc config SysmonLog start= DEMANDsc config TapiSrv start= DEMANDsc config TermService start= DEMANDsc config Themes start= AUTOsc config TlntSvr start= DISABLEDsc config TrkWks start= AUTOsc config UMWdf start= DEMANDsc config upnphost start= DEMANDsc config UPS start= DEMANDsc config VSS start= DEMANDsc config W32Time start= AUTOsc config WebClient start= AUTOsc config winmgmt start= AUTOsc config WmdmPmSN start= DEMANDsc config Wmi start= DEMANDsc config WmiApSrv start= DEMANDsc config wscsvc start= AUTOsc config wuauserv start= AUTOsc config WZCSVC start= AUTOsc config xmlprov start= DEMANDecho 恢复XP原系统服务结束,按任意键返回!pause >nulgoto start2:start3clsecho Windows Xp 优化文件!echo Powered By ThunderRay!echo.echo ==============================echo 请选择要进行的操作,然后按回车echo ==============================echo.echo 1.封杀135,445端口echo.echo 2.恢复135,445端口echo.echo 3.返回主菜单echo.echo 4.退出echo.:Choice3set choice3=set /p choice3= 请选择:IF NOT "%Choice3%"=="" SET Choice2=%Choice2:~0,1%if /i "%choice3%"=="1" goto killportif /i "%choice3%"=="2" goto openportif /i "%choice3%"=="3" goto startif /i "%choice3%"=="4" goto endecho 选择无效,请重新输入echo.goto Choice3:killportclsecho 开始封杀135,445端口...reg add HKLM/SOFTWARE/Microsoft/Ole /v EnableDCOM /d N /freg add HKLM/SOFTWARE/Microsoft/Rpc /v "DCOM Protocols" /t REG_MULTI_SZ /d ncacn_spx/0ncacn_nb_nb/0ncacn_nb_ipx/0 /fsc config MSDTC start= DISABLEDreg add HKLM/SYSTEM/CurrentControlSet/Services/NetBT/Parameters /v SMBDeviceEnabled /t REG_DWORD /d 0 /fecho 封杀135,445端口结束,按任意键返回!pause >nulgoto start3:openportclsecho 开始恢复135,445端口...reg add HKLM/SOFTWARE/Microsoft/Ole /v EnableDCOM /d Y /freg add HKLM/SOFTWARE/Microsoft/Rpc /v "DCOM Protocols" /t REG_MULTI_SZ /d ncacn_spx/0ncacn_nb_nb/0ncacn_nb_ipx/0ncacn_ip_tcp/0 /fsc config MSDTC start= AUTOreg add HKLM/SYSTEM/CurrentControlSet/Services/NetBT/Parameters /v SMBDeviceEnabled /t REG_DWORD /d 1 /fecho 恢复135,445端口结束,按任意键返回!pause >nulgoto start3:ipclsecho 开始设置IP地址...netsh interface ip set address name="本地连接" static 192.168.1.2 255.255.255.0echo 设置IP地址结束,按任意键返回!pause >nulgoto start:otherclsecho 开始进行其它优化...taskkill /im TIMPlatform.exe /fdel /f /s /q C:/Progra~1/Tencent/QQ/TIMPlatform.exedel /f /s /q D:/Progra~1/Tencent/QQ/TIMPlatform.exetaskkill /im realsched.exe /fdel /f /s /q C:/Progra~1/Common~1/Real/Update_OB/realsched.exe@rem 删除运行QQ和Real时启动的多余程序reg delete HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run /va /freg delete HKCR/Software/Microsoft/Windows/CurrentVersion/Run /va /freg delete "HKLM/SOFTWARE/Microsoft/Shared Tools/MSConfig/startupreg" /fdel "C:/Documents and Settings/All Users/「开始」菜单/程序/启动/*.*" /q /fdel "C:/Documents and Settings/Default User/「开始」菜单/程序/启动/*.*" /q /fdel "%userprofile%/「开始」菜单/程序/启动/*.*" /q /f@rem 删除多余的启动项regsvr32 /u /s igfxpph.dllreg delete HKCR/Directory/Background/shellex/ContextMenuHandlers /freg add HKCR/Directory/Background/shellex/ContextMenuHandlers/new /ve /d {D969A300-E7FF-11d0-A93B-00A0C90F2719}reg delete HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run /v HotKeysCmds /freg delete HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run /v IgfxTray /f@rem 删除桌面多余的右键菜单sfc /purgecache@rem 消除系统缓存regsvr32 /u /s zipfldr.dll@rem 取消ZIP文件夹功能reg add "HKCU/Control Panel/Desktop" /v AutoEndTasks /t REG_DWORD /d 1 /freg add "HKCU/Control Panel/Desktop" /v HungAppTimeout /d 50 /freg add "HKCU/Control Panel/Desktop" /v WaitToKillAppTimeout /d 200 /f@rem 加快关机速度reg add "HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/Memory Management/PrefetchParameters" /v EnablePrefetcher /t REG_DWORD /d 1 /f@rem 启动条滚动一次reg add HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer /v AlwaysUnloadDLL /t REG_DWORD /d 1 /f@rem 清除内存中不被使用的DLL文件reg add "HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug" /v Auto /d 0 /f@rem 关闭华医生reg add "HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon" /v SFCDisable /t REG_DWORD /d 4294967197 /f@rem 禁用文件保护reg add "HKCU/Software/Microsoft/Windows/CurrentVersion/Internet Settings" /v MaxConnectionsPer1_0Server /t REG_DWORD /d 8 /freg add "HKCU/Software/Microsoft/Windows/CurrentVersion/Internet Settings" /v MaxConnectionsPerServer /t REG_DWORD /d 8 /f@rem IE下载多线程reg add HKU/.DEFAULT/Software/Microsoft/Windows/CurrentVersion/Explorer /v Link /t REG_BINARY /d 00000000 /f@rem 去掉快捷方式字样reg add HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/policies/Explorer /v NoLowDiskSpaceChecks /t REG_DWORD /d 1 /f@rem 取消磁盘空间太小提示reg add HKLM/SYSTEM/CurrentControlSet/Control/FileSystem /v ConfigFileAllocSize /t REG_DWORD /d 500 /f@rem 优化文件系统reg add HKCU/Console /v LoadConIme /t REG_DWORD /d 0 /f@rem 运行CMD时不自动加载Conimereg add HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/policies/system /v dontdisplaylastusername /t REG_DWORD /d 1 /f@rem 不显示上次登陆用户名reg add HKLM/SYSTEM/CurrentControlSet/Control/Lsa /v restrictanonymous /t REG_DWORD /d 1 /f@rem 不允许 SAM帐户和共享的匿名枚举reg add HKLM/SYSTEM/ControlSet001/Control/CrashControl /v AutoReboot /t REG_DWORD /d 0 /freg add HKLM/SYSTEM/ControlSet001/Control/CrashControl /v CrashDumpEnabled /t REG_DWORD /d 0 /freg add HKLM/SYSTEM/ControlSet001/Control/CrashControl /v DumpFile /t REG_EXPAND_SZ /d %SystemRoot%/MEMORY.DMP /freg add HKLM/SYSTEM/ControlSet001/Control/CrashControl /v LogEvent /t REG_DWORD /d 0 /freg add HKLM/SYSTEM/ControlSet001/Control/CrashControl /v MinidumpDir /t REG_EXPAND_SZ /d %SystemRoot%/Minidump /freg add HKLM/SYSTEM/ControlSet001/Control/CrashControl /v Overwrite /t REG_DWORD /d 1 /freg add HKLM/SYSTEM/ControlSet001/Control/CrashControl /v SendAlert /t REG_DWORD /d 0 /f@rem 系统失败的几个勾全都不选reg add HKLM/SOFTWARE/Microsoft/PCHealth/ErrorReporting /v DoReport /t REG_DWORD /d 0 /freg add HKLM/SOFTWARE/Microsoft/PCHealth/ErrorReporting /v ShowUI /t REG_DWORD /d 0 /f@rem 禁用错误汇报,但在发生严重错误时通知我的勾不选reg add HKCR/CLSID/{450D8FBA-AD25-11D0-98A8-0800361B1103} /v SortOrderIndex /t REG_DWORD /d 54 /f@rem 桌面第一显示我的电脑reg add HKLM/SOFTWARE/Classes/*/shell/OpenInNotepad /ve /d 使用记事本打开 /freg add HKLM/SOFTWARE/Classes/*/shell/OpenInNotepad/command /ve /d "notepad.exe /"%%1%/"" /freg add HKCR/Directory/shell/DOS /ve /d 使用DOS浏览 /freg add HKCR/Directory/shell/DOS/Command /ve /d "cmd.exe /k /"cd %%L%" /f@rem 在文件右键菜单增加"使用记事本打开"&在文件夹右键增加使用DOS浏览reg add "HKCU/Software/Microsoft/Windows/CurrentVersion/Explorer/User Shell Folders" /v Favorites /t REG_EXPAND_SZ /d D:/Favorites /freg add "HKCU/Software/Microsoft/Windows/CurrentVersion/Explorer/User Shell Folders" /v Personal /t REG_EXPAND_SZ /d "D:/My Documents" /f@rem 将我的文档与收藏夹放在D盘下echo 其它优化结束,按任意键返回!pause >nulgoto start:OEMclsecho 开始设置OEM信息...Copy /y OEM/*.* %windir%/system32/*.* >nulecho OEM设置信息结束,按任意键返回!pause >nulgoto start:virusclsecho 开始清除根目录下的SXS病毒...FOR %%a IN ( C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: X: Y: Z: ) DO ATTRIB -R -H -S -A %%a/SXS.EXE & DEL /F /Q /A -R -H -S -A %%a/SXS.EXE & ATTRIB -R -H -S -A %%a/AUTORUN.INF & DEL /F /Q /A -R -H -S -A %%a/AUTORUN.INFecho 清除根目录下的SXS病毒结束,按任意键返回!pause >nulgoto start:delclsecho 开始清理系统垃圾文件...del /f /s /q %systemdrive%/*.tmpdel /f /s /q %systemdrive%/*._mpdel /f /s /q %systemdrive%/*.logdel /f /s /q %systemdrive%/*.giddel /f /s /q %systemdrive%/*.chkdel /f /s /q %systemdrive%/*.olddel /f /s /q %systemdrive%/recycled/*.*del /f /s /q %windir%/*.bakdel /f /s /q %windir%/prefetch/*.*rd /s /q %windir%/temp & md %windir%/tempdel /f /q %userprofile%/cookies/*.*del /f /q %userprofile%/recent/*.*del /f /s /q "%userprofile%/Local Settings/Temporary Internet Files/*.*"del /f /s /q "%userprofile%/Local Settings/Temp/*.*"del /f /s /q "%userprofile%/recent/*.*"echo 清理系统垃圾文件结束,按任意键返回!echo.pause >nulgoto start:endexit

通过对以上的实现方式大家可以参考一下。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表