如果存在两个目录 - 什么也不做

时间:2011-01-03 15:59:32

标签: batch-file

我正在使用IF EXIST批处理文件命令,但遇到了一个场景。 我想做的是

IF EXIST C:\ Windows \ system32调用batchfile2

IF EXIST C:\ WINNT \ system32调用batchfile3

但是如果win2k升级到XP而不是全新的XP安装,有些情况下PC上都存在这两个目录。如果它检测到两个目录,我想要它做什么是“什么都不做”,因为上面的前两个选项已经处理了我想要做的事情。有人能告诉我如何操纵这个吗?

除了上述内容之外,我相信我也可以在同一个批处理中调用子程序,但是如果它检测到“Windows \ system32”和“Windows32”,我怎样才能创建一个子程序来结束脚本 “WINNT \ SYSTEM32”?

如果EXISTS C:\ Windows \ system32转到sub1,则转到sub2

:SUB1

:SUB2

非常感谢提前。

3 个答案:

答案 0 :(得分:5)

我不确定您何时想要执行哪个选项,但您可以根据需要组合gotos和标签。可能有点精心,但至少有条理:

@echo off
IF EXIST C:\Windows\system32 goto windowsfound
:afterwindows
IF EXIST C:\WINNT\system32 goto winntfound
:afterwinnt
goto end

:windowsfound
IF EXIST C:\WINNT\system32 goto bothexist
echo Windows folder found, do something.
call batchfile2
goto afterwindows

:winntfound
echo WINNT folder found, do something.
call batchfile3
goto afterwinnt

:bothexist
echo Both folders already exist.
goto end

:end
echo Exiting.

我认为也可以同时检查两行:

@echo off
IF EXIST C:\Windows\system32 IF EXIST C:\WINNT\system32 goto bothfound

IF EXIST C:\Windows\system32 goto windowsfound
IF EXIST C:\WINNT\system32 goto winntfound

:windowsfound
echo Windows folder found, do something.
call batchfile2
goto end

:winntfound
echo WINNT folder found, do something.
call batchfile3
goto end

:bothexist
echo Both folders already exist.
goto end

:end
echo Exiting.

答案 1 :(得分:3)

一种简单的方法是:

if exist c:\windows\system32 if exist c:\winnt\system32 goto morestuff
if exist c:\windows\system32 call batchfile2
if exist c:\winnt\system32 call batchfile3
:morestuff
...

答案 2 :(得分:-1)

你可以删除“@ECHO OFF”... REM只是文件中的注释..而ECHO只是它输出的东西..(如果你删除它的回声它将显示所有它... )

基本上,您可以使用goto语句跳转到文件的不同部分..您只需引用goto标签..然后在文件中使用colen并将标签名称作为锚点/目标/标签。

@ECHO OFF
REM Check to see if windows\system32 exists.. if so skip to the part 2 section
IF EXIST C:\WINDOWS\system32 goto parttwo

REM if windows\system32 didnt exist, it will check for the other dir...
IF EXIST C:\WINNT\system32 goto partthree


REM if we get to this point.. neither directory existed...  so skip to a message about that
goto neither

:parttwo
echo windows\system32 existed
REM because it was not checked earlier, check to see if the second directroy exists
IF EXIST C:\WINNT\system32 goto end

echo windows\system32 existed, but winnt\system32 does not...
echo do or call whatever for part 3....



goto end



:partthree
echo winnt\system32 existed
echo do or call whatever for part three




goto end



:neither
echo Could not find windows or winnt \system32


:end
echo goodbye

您可以随时点击MS获取更多信息: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true