Programming 板


LINE

※ 引述《blackspace98 (~我爱夏天~)》之铭言: : if %ERRORLEVEL% == 0 ( : echo "%process_name%" Program is Running !!! : ) else ( : echo "%process_name%" Program is Not Running !!! : set /p index=input[Y,N]: : echo %index% : if "%index%" == 'Y' ( : start D:\software\FSCapture.exe : ) : ) : pause : 如果把黄色的部分拿掉只剩下 start D:\software\FSCapture.exe : 就很顺利的达成我要的结果 : 但是如果加上黄色的部分,当我执行的时候就会出现如下的讯息 : input[Y,N]:Y : ECHO 已关闭。 : 请按任意键继续 . . . : 请问各位,这应该怎麽解决呢? 谢谢您 这里有两个问题 其一, Windows 的变数展开是在读取指令时取代 注意这并不是细部的一条指令, 而是最外层的一条指令 在此就是我上面留下来的 if ... (...) else (...) 这一大块 在读取这条指令的当下 %index% 还没有值 所以那行 "echo %index%" 就只会展开成 "echo " 而没有参数的 echo 是用来显示目前的 echo 设定情形的 (就是执行指令时要不要先印指令出来) 因为这时是 echo off 状态所以显示了「ECHO 已关闭。」 这个要解决得要使用所谓的「延迟环境变数展开」功能 用法是原本用 %...% 展开的变数改成 !...! 这样就能够让变数展开留到底层指令执行时才展开 其二, 你的 if 字串比对用法错了 事实上 Windows batch 的 if 只要里面有带 == 就一定是字串比对 不需要也不认得双引号 这个双引号的使用跟 if 无关, 而是跟命令列参数的切割有关 但因为 if 是内部指令, 他会直接去看这个切割出来的参数字串而不删除双引号 因此当比较字串两端的引号状况有所不同时就一定不会成立 例如 if "a" == a (echo True) else (echo False) ←这个印出 False if "a" == 'a' (echo True) else (echo False) ←这个也印出 False if "'a'" == 'a' (echo True) else (echo False) ←这个也印出 False if "a" == "a" (echo True) else (echo False) ←这个印出 True if a == a (echo True) else (echo False) ←这个也印出 True if 'a' == 'a' (echo True) else (echo False) ←这个也印出 True 所以, 这里你要改成 if "!index!" == "Y" ( ... 这样才会正确比较 (注意这里也是延迟展开, 理由很容易明白) 另外应该有不少人有听说这种比较就都加双引号, 这是为了安全起见 因为变数里有空白或根本变数就是空值时会对命令解析造成影响 要让 == 两边都能有恰好一个东西的话用 "" 抓起来让它切割成一整个参数再去比最简单 -- 1985/01/12 三嶋鸣海 1989/02/22 优希堂悟 1990/02/22 冬川こころ 1993/07/05 小町 つぐみ 欢迎来到 1994/05/21 高江ミュウ 1997/03/24 守野いづみ 1997/03/24 伊野瀬 チサト 1998/06/18 守野くるみ 打越钢太郎的 1999/10/19 楠田ゆに 2000/02/15 樋口遥 2002/12/17 八神ココ 2011/01/11 HAL18於朱仓岳坠机 ∞与∫的世界 2011/04/02 茜崎空 启动 2012/05/21 第貮日蚀计画预定 2017/05/01~07 LeMU崩坏 2019/04/01~07 某大学合宿 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.39.85
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1452186223.A.B89.html
1F:推 iamnotgm: 学习了 61.56.12.194 01/08 10:56
2F:推 oscar60111: 推 140.125.33.221 01/08 18:00
3F:推 blackspace98: 谢谢您~我的问题解决了~ 36.224.119.129 01/11 21:21
4F:推 cutekid: 推(Y) 210.61.233.210 01/13 16:10







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP