Board logo

标题: [文件操作] [已解决]为啥批处理if命令不能正常运行我是win7 64位的系统? [打印本页]

作者: wszhov    时间: 2011-11-6 23:45     标题: [已解决]为啥批处理if命令不能正常运行我是win7 64位的系统?

本帖最后由 wszhov 于 2011-11-7 14:04 编辑
  1. @echo off
  2. set mrwj=rm,rmvb,avi,wmv,mpg,mkv,rar,zip,exe,txt,doc,jpg
  3. echo 请把文件类型用","隔开(英文状态下输入一个逗号)
  4. echo 直接回车选择默认文件类型
  5. echo 重新设置文件类型请输入N
  6. set tjwj=
  7. set /p tjwj=请输入要添加的文件类型
  8. if %tjwj%==n (set /p zwj=请重新输入文件类型
  9.    goto run)  
  10. if "%tjwj%"=="" (set zwj=%mrwj%
  11.   goto run)
  12. set zwj=%mrwj%,%tjwj%
  13. :run
  14. echo 选择的文件类型是%zwj%
  15. 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