无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 4709|回复: 5
打印 上一主题 下一主题

[求助] 各位前辈,请教 set/p 输入内容的问题[已解决]

[复制链接]
跳转到指定楼层
1#
发表于 2018-7-2 15:56:28 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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
2#
 楼主| 发表于 2018-7-5 13:24:37 | 显示全部楼层
chiannet 发表于 2018-7-3 22:14
发现上面的批处理处理不了"!"做定位符。

@echo off
setlocal enabledelayedexpansion
::假设 1.txt 的内容为:1245.55!45
type 1.txt
echo.
for /f tokens^=1-2^ delims^=^! %%i in ( 'type 1.txt' ) do (echo %%i)
pause
请测试.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-6 16:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表