找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33168|回复: 7

[系统相关] 批处理选择菜单中输入双引号闪退

[复制链接]
发表于 2017-9-12 00:16:03 | 显示全部楼层 |阅读模式
在选择菜单中,输入双引号“,会直接闪退
倒是让我找到一个解决方法,那就是开启变量延迟。这里想请教下还有什么方法能解决这个问题?

示例代码:
  1. @echo off
  2. :1
  3. cls
  4. set n=
  5. set /p n=请输入数字(1 2):
  6. if "%n%"=="1" (set test=测试一)
  7. if "%n%"=="2" (set test=测试二)
  8. if defined test (
  9. echo 结果是 %test%,按任意键退出. . .
  10. pause >nul&exit
  11. )
  12. goto 1
复制代码
解决方法:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :1
  4. cls
  5. set n=
  6. set /p n=请输入数字(1 2):
  7. if "!n!"=="1" (set test=测试一)
  8. if "!n!"=="2" (set test=测试二)
  9. if defined test (
  10. echo 结果是 %test%,按任意键退出. . .
  11. pause >nul&exit
  12. )
  13. goto 1
复制代码
发表于 2017-9-12 04:25:24 | 显示全部楼层
set /p "a=输入怎么不退?气死你哈哈
echo,%a%
发表于 2017-9-15 18:51:25 | 显示全部楼层
不一定要用变量延迟。。直接改用if,else搭配就行了
@echo off
:1
cls
set n=
set /p n=请输入数字(1 2):
if "%n%"=="1" (set test=测试一)
if "%n%"=="2" (set test=测试二) else (echo 输入错误 &ping 127.1 -n 2 >nul)
if defined test (
echo 结果是 %test%,按任意键退出. . .
pause >nul&exit
)
goto 1
 楼主| 发表于 2017-9-17 18:18:34 | 显示全部楼层
本帖最后由 不知道是谁 于 2017-9-17 18:20 编辑

回复 3# 1055367558


    这个没用,输入双引号还是会闪退的,你可以测试一下
除了用变量延迟外,暂时没发现有其他什么方法

还有,行数较多的代码最好用 [code] 标记起来,被发现了说不定要扣分的
发表于 2017-9-17 22:11:39 | 显示全部楼层
替换双引号:
  1. set "n=%n:"=%"
复制代码
修改后:
  1. @echo off
  2. :1
  3. cls
  4. set n=
  5. set /p "n=请输入数字(1 2):"
  6. set "n=%n:"=%"
  7. if "%n%"=="1" (set test=测试一)
  8. if "%n%"=="2" (set test=测试二)
  9. if defined test (
  10. echo 结果是 %test%,按任意键退出. . .
  11. pause >nul&exit
  12. )
  13. goto 1
复制代码
发表于 2017-9-17 23:33:22 | 显示全部楼层
本帖最后由 老刘1号 于 2017-9-17 23:40 编辑

回复 5# yu2n


    不严谨,比如输入""""1也会判断为一
If判断时只要"在""中成对出现就可以正常判断
所以应该是 set "var=%var:"=""%"
不改变变量内容的话,应该直接在if中予以判断
If "%var:"=""%" equ "xxx" command
同时这样还可以应对其它特殊字符
发表于 2017-9-19 13:17:05 | 显示全部楼层
是不是说只能开变量延迟了。。。
 楼主| 发表于 2017-9-20 18:26:32 | 显示全部楼层
回复 7# 1055367558


    开变量延迟是目前我已知的最简单的方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 22:32 , Processed in 0.019512 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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