无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 3821|回复: 7
打印 上一主题 下一主题

请帮俺看看这个批处理错在哪?

[复制链接]
跳转到指定楼层
1#
发表于 2007-3-17 13:10:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
@echo off
if not exist c:\abc goto prepare

:start
c:\abc\xyz.exe
goto ok

:prepare
md c:\abc
copy a:\xyz.exe c:\abc
goto start

:ok

我的原意是:如果C盘下没有abc文件夹,就在C盘下建一个名为abc的文件夹,然后将xyz.exe拷进去,再运行xyz.exe;如果C盘下有abc文件夹,就直接运行xyz.exe。

可是现在这个批处理一运行,就开始在C盘建文件夹,即使那里已经有了abc文件夹。怎么运行都是这样,这是怎么回事?我对IF和GOTO语句的理解错在哪?

请老师们教导!
2#
发表于 2007-3-17 14:08:17 | 只看该作者
原帖由 dosmexp 于 2007-3-17 01:10 PM 发表
@echo off
if not exist c:\abc goto prepare

:start
c:\abc\xyz.exe
goto ok

:prepare
md c:\abc
copy a:\xyz.exe c:\abc
goto start

:ok

我的原意是:如果C盘下没有abc文件夹,就在C盘下建 ...

可以建立撒。.另外COPY语句错了。应该是COPY A:\XYZ.EXE C:\ABC\XYZ.EXE..还有。.OK语句没有命令行
事实上。你没必要写PREPARE语句撒。直接在COPY下面运行XYZ.EXE不就可以了?
@echo off
if not exist c:\abc goto 2
c:\abc\xyz.exe
goto ok

:2
md c:\abc
copy/y  a:\xyz.exe c:\abc\xyz.exe
c:\abc\xyz.exe
goto ok

:ok
exit
回复

使用道具 举报

3#
发表于 2007-3-19 04:26:53 | 只看该作者
可是现在这个批处理一运行,就开始在C盘建文件夹,即使那里已经有了abc文件夹。怎么运行都是这样,这是怎么回事?


If 在批处理程序中执行条件处理。
【语法】
  1. if [not] errorlevel Number Command [else Expression]
  2. if [not] String1==String2 Command [else Expression]
  3. if [not] exist FileName Command [else Expression]
复制代码
注意上面最后一行,是“文件名”,非“文件夹”。就你的批处理第二行“if not exist c:\abc goto prepare”是判断是否有叫abc的文件,很明显这语句永远为“真”,就一定转到“prepare"行。

【注意】
  1. if 命令不能用于直接测试目录,但空 (NUL) 设备确实存在于每个目录中。因此,可以通过测试零设备确定目录是否存在。
复制代码

if not exist c:\abc goto prepare
应改为:
if not exist c:abc\null goto prepare

[ 本帖最后由 Sia 于 2007-3-19 04:33 AM 编辑 ]
回复

使用道具 举报

4#
发表于 2007-3-25 23:37:53 | 只看该作者
楼上的另人费解,怎么不能判断空目录是否存在,画蛇添足了!

试试以下代码:

if not exist c:\abc (echo 没有目录) else echo 有目录
回复

使用道具 举报

5#
发表于 2007-3-26 11:14:09 | 只看该作者
if not exist c:\abc goto prepare

:start
c:\abc\xyz.exe
goto ok

:prepare
md c:\abc
copy a:\xyz.exe c:\abc
echo >>it's ok
goto start

:ok
pause

我测试了,没有问题.有可能少写了冒号的原因

[ 本帖最后由 jasonwang 于 2007-3-26 11:17 AM 编辑 ]
回复

使用道具 举报

6#
发表于 2007-3-26 11:15:01 | 只看该作者
运行1:
C:\Documents and Settings\jasonwang\桌面>if not exist c:\abc goto prepare

C:\Documents and Settings\jasonwang\桌面>md c:\abc

C:\Documents and Settings\jasonwang\桌面>copy a:\xyz.exe c:\abc
系统找不到指定的驱动器。

C:\Documents and Settings\jasonwang\桌面>echo  ok 1>>it's

C:\Documents and Settings\jasonwang\桌面>goto start

C:\Documents and Settings\jasonwang\桌面>c:\abc\xyz.exe
'c:\abc\xyz.exe' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Documents and Settings\jasonwang\桌面>goto ok

C:\Documents and Settings\jasonwang\桌面>pause
请按任意键继续. . .







运行2:
C:\Documents and Settings\jasonwang\桌面>if not exist c:\abc goto prepare

C:\Documents and Settings\jasonwang\桌面>c:\abc\xyz.exe
'c:\abc\xyz.exe' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Documents and Settings\jasonwang\桌面>goto ok

C:\Documents and Settings\jasonwang\桌面>pause
请按任意键继续. . .

[ 本帖最后由 jasonwang 于 2007-3-26 11:19 AM 编辑 ]
回复

使用道具 举报

7#
发表于 2007-3-27 21:43:26 | 只看该作者
应该没有什么问题呀
回复

使用道具 举报

8#
发表于 2007-4-10 00:23:51 | 只看该作者
顶下,用于自动备份或还原系统时,判断目标目录是否存在......一会试下哪种可行,.......
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-10 17:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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