标题: [文件操作] [已解决]为啥批处理if命令不能正常运行我是win7 64位的系统? [打印本页]
作者: wszhov 时间: 2011-11-6 23:45 标题: [已解决]为啥批处理if命令不能正常运行我是win7 64位的系统?
本帖最后由 wszhov 于 2011-11-7 14:04 编辑
- @echo off
- set mrwj=rm,rmvb,avi,wmv,mpg,mkv,rar,zip,exe,txt,doc,jpg
- echo 请把文件类型用","隔开(英文状态下输入一个逗号)
- echo 直接回车选择默认文件类型
- echo 重新设置文件类型请输入N
- set tjwj=
- set /p tjwj=请输入要添加的文件类型
- if %tjwj%==n (set /p zwj=请重新输入文件类型
- goto run)
- if "%tjwj%"=="" (set zwj=%mrwj%
- goto run)
- set zwj=%mrwj%,%tjwj%
- :run
- echo 选择的文件类型是%zwj%
- pause
复制代码
这是批处理的一部分,但问题出在这了,我就把它提了出来
程序是显示文件类型,如果直接回车的话,会将set zwj=%mrwj%,但是我回车程序一闪而过就退出了.
if "%tjwj%"=="" (set zwj=%mrwj%
goto run)
这句不能正确执行的
原来这句是
if defined tjwj (set zwj=%mrwj%,%tjwj%) else (set zwj=%mrwj%)
也是一闪而过,还有我
if ..=.. (set /p ....) else (if set.....else set....)
这种情况也是一样啊,搞的我头都大了
作者: yyykkkyyyy 时间: 2011-11-7 09:25
问题出在 if %tjwj%==n
当 %tjwj% 为空,语句就不合格了,可以加引号判断,或把此一大句移至
if "%tjwj%"=="" 这句之后,这样,为空时就已跳开了,不会造成错误
当然最好有加引号判断的习惯,以及学会出错后会在命令行去执行,包括打开回显,适当增加临时显示暂停等查错技巧,任何人写代码总是难免有失误的
作者: wszhov 时间: 2011-11-7 11:34
回复 2# yyykkkyyyy
谢谢了,原来如此。不过我有时加pause也没有用。就这段批处理我在该加的地方都加了,但还是一散而过,不过现在我知道如何改了
作者: HAT 时间: 2011-11-7 11:44
回复 3# wszhov
打开一个CMD窗口运行你的bat脚本,不要双击运行。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |