我正在使用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
非常感谢提前。
答案 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