0

我有一个 bat 文件来创建文件夹。

:X3Main
IF EXIST "%1%\JBoss" goto Test
IF EXIST "%1%\DB" goto DB
goto end

:Test
mkdir "%DESTINATION%\IX3\COSMIC\JBoss"
goto end

:DB
mkdir "%DESTINATION%\IX3\COSMIC\DB"
goto end

这里第一个文件夹已成功创建(IF EXIST "%1%\JBoss" goto Test),但第二个功能不起作用。如果我删除第一个功能,那么第二个功能正在工作。

请问有人能解释一下这背后的原因吗?

4

2 回答 2

0

一些额外信息:在 Windows 的 NT 行中,为了对文件夹进行可靠测试,您需要以反斜杠结束文件夹名称

你的意思可能是 %~1 而不是 %1%

IF EXIST "%~1\JBoss\" do task

在您的情况下,您始终可以使用它,如果文件夹已经存在,它将什么都不做:2>nul当文件夹存在时,它会消除无害的错误消息。

mkdir "%DESTINATION%\IX3\COSMIC\JBoss" 2>nul
mkdir "%DESTINATION%\IX3\COSMIC\DB" 2>nul
于 2013-05-02T11:08:49.380 回答
0

尝试这个:

:X3Main
IF EXIST "%1%\JBoss\" call:Test
IF EXIST "%1%\DB\" call:DB
goto :eof &rem or goto:end or where you want

:Test
mkdir "%DESTINATION%\IX3\COSMIC\JBoss"
goto :eof

:DB
mkdir "%DESTINATION%\IX3\COSMIC\DB"
goto :eof

用于call从函数返回并goto:eof结束函数。编辑了关于 foxidrive 的答案。

于 2013-05-02T11:04:08.967 回答