2012-10-25 56 views
1

我想知道是否有可能啓動一個批量薄從另一批特定轉到功能?開始批量與特定的goto命令

因此不只是啓動另一個批處理文件,而且還有「母親」批次在「子」批中選擇特定的goto選項?

回答

1

1.bat

call 2.bat /c goto :this 
call 2.bat /c call :that 

2.bat

if "%1"=="/c" shift & shift & %2 %3 
goto :eof 

:this 
echo This! 
goto :eof 

:that 
echo That! 
goto :eof 

編輯:我原來的職位是最接近糾正。但我已經糾正了我的錯誤(或多個)。

我雙移,將%1和%2移除到左邊,從而將任何其他變量傳遞給%1和%2位置。然後我執行%2和%3,因爲直到該行完成執行/解釋爲止,轉換的效果纔會生效。

+1

爲什麼你換兩次沒有任何影響? – jeb

+0

@jeb - 哎呀,我的錯。一定比我想象的更累。 –

+0

不錯的主意,但它又不起作用:-)由於換檔對同一行中的'%1%2'沒有影響 – jeb

1

只需擁有父/母批處理文件並將參數傳遞給子批處理文件即可。

mom.bat

@ECHO OFF 
ECHO Here we go 
CALL child.bat 3 
PAUSE 

child.bat

@ECHO OFF 

IF "%1"=="1" Goto 1 
IF "%1"=="2" Goto 2 
IF "%1"=="3" Goto 3 

EXIT 

:1 

ECHO 1! 
PAUSE 
EXIT 

:2 

ECHO 2! 
PAUSE 
EXIT 

:3 

ECHO 3! 
PAUSE 
EXIT 

這個例子應該呼應3!作爲母親批處理文件傳遞參數孩子批處理文件。

+0

+1,你爲什麼要檢查'%1'?只是跳到它也應該工作 – jeb

+0

@jeb - 我想這取決於你如何命名Goto參數,如果你可以修改子批處理文件或不是,但好點。 – LittleBobbyTables

+0

我不能縫以獲得任何工作的權利。是呼叫功能的理想原因,我試圖讓媽媽蝙蝠用%0調用自己,並在新窗口中打開goto函數。這樣我可以保持不同的功能打開,並繼續在原來的導航 –

1

是的,但它是一個黑客。

通常情況下,您可以通過調用的批處理文件獲得一些幫助。

main.bat

call second.bat :theFunction 

* second.bat

goto %1 

... 
:theFunction 

的hack使用一個功能的bug,你只需要在同一個標​​籤作爲second.bat。 如果你開始second.bat沒有call

main.bat

call :theFunction 
echo back in main 
exit /b 

:theFunction 
second.bat 
echo back in the func in main, this line will never reached 
exit /b This line will also never reached 

當second.bat回報,它將在main.bat的call後返回的行它只

0

在批處理文件,你在呼喚把這個頂部

if not %1=="" goto :%1 

在您使用的稱呼它爲批處理文件把

call b.bat labelname 

這顯然是有限的取決於你正在嘗試做的,但基本的功能性作品。