2013-05-02 205 views
0

我有一個bat文件來創建文件夾。使用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)但第二個函數不起作用。如果我刪除第一個功能,那麼第二個功能正在工作

請你有人解釋這個背後的原因嗎?

+0

您發佈的代碼的意圖不明確。請更好地解釋一下包含文件夾結構的例子。另外,請查看下面的一些答案,他們給出了一些提示:1.小心'%1','%1%','%〜1'和'「%〜1」'之間的差異。 2.注意'goto end'和'goto:eof'之間的區別,以及'goto'和'call'之間的區別。 – 2013-05-02 14:17:04

回答

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的答案。

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