|
本帖最后由 yechengzhou 于 2018-7-5 15:05 编辑
各位前辈,请教 set/p 输入内容的问题
比如输入以下特殊符号按回车后会终止批处理的执行并退出
|
&
<
>
有解决办法的方案吗?
已找到的方案,请各位测试...
@echo off
setlocal enabledelayedexpansion
:x
cls
set ^a=z
set/p ^a=请选择[0-4]:
set str=!^a!
set str=!str!fedcba9876543210&set/a len=0x!str:~15,1!
if %len% gtr 1 goto x
if !^a!==^| goto x
if !^a!==^& goto x
if !^a!==^< goto x
if !^a!==^> goto x
if !^a!==^" goto x
if !^a!==^^ goto x
if !^a!==^; goto x
if !^a!==^, goto x
if !^a!==^= goto x
if !^a!==^^! goto x
if !^a!==z goto x
if !^a!==1 goto y
if !^a!==2 goto y
if !^a!==3 goto y
if !^a!==4 goto y
if !^a!==0 exit
goto x
:y
echo 你好
pause
goto x
这种方案简洁
@echo off
setlocal enabledelayedexpansion
:x
cls
set/p ^str=请选择[0-2]:
for %%i in ( ^echo !^str!^ ) do (set str1=%%i)
if not !^str!==!str1! goto x
if !^str!==0 goto y
if !^str!==1 goto y
if !^str!==2 goto y
goto x
:y
echo 你好
pause
goto x
用在更改文件名称的方案:
@echo off
setlocal enabledelayedexpansion
:x
cls
set/p ^str=请输入一新的有效文件名称(不包括扩展名):
for /f tokens^=1-2^ delims^=^" %%i in ('echo !^str!') do set ^str1=%%i
if !^str! gtr !^str1! goto x
set str2=^!^str:~0,1!
if "%str2%"==" " goto x
@echo off>%cd%\log_files\^!^str!.123
if exist %cd%\log_files\.123 del %cd%\log_files\.123
if not exist %cd%\log_files\!^str!.123 (goto x) else (goto y)
goto x
:y
del %cd%\log_files\*.123
echo !^str!
pause
goto x |
|