[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]为啥批处理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....)
这种情况也是一样啊,搞的我头都大了
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

问题出在 if %tjwj%==n
当 %tjwj%  为空,语句就不合格了,可以加引号判断,或把此一大句移至
if "%tjwj%"=="" 这句之后,这样,为空时就已跳开了,不会造成错误
当然最好有加引号判断的习惯,以及学会出错后会在命令行去执行,包括打开回显,适当增加临时显示暂停等查错技巧,任何人写代码总是难免有失误的
2

评分人数

TOP

回复 2# yyykkkyyyy
谢谢了,原来如此。不过我有时加pause也没有用。就这段批处理我在该加的地方都加了,但还是一散而过,不过现在我知道如何改了

   

TOP

回复 3# wszhov


打开一个CMD窗口运行你的bat脚本,不要双击运行。
1

评分人数

    • CrLf: 乐于助人PB + 3

TOP

返回列表