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

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

[复制链接]
发表于 2011-11-6 23:45:32 | 显示全部楼层 |阅读模式
本帖最后由 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....)
这种情况也是一样啊,搞的我头都大了

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

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

评分

参与人数 2PB +5 技术 +1 收起 理由
Batcher + 1 乐于助人
CrLf + 5 乐于助人

查看全部评分

 楼主| 发表于 2011-11-7 11:34:09 | 显示全部楼层
回复 2# yyykkkyyyy
谢谢了,原来如此。不过我有时加pause也没有用。就这段批处理我在该加的地方都加了,但还是一散而过,不过现在我知道如何改了

   
发表于 2011-11-7 11:44:17 | 显示全部楼层
回复 3# wszhov


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

评分

参与人数 1PB +3 收起 理由
CrLf + 3 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 06:55 , Processed in 0.020160 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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