2011-09-15 16 views
3

是否有可能產生具有一串命令(commands.bat)批處理腳本 - CALL另一批腳本調用線以執行特定命令

ECHO HELLO 
ECHO HOLA 
ECHO KONICHIWA 
ECHO ANYONGHASEYO 
ECHO BONJOUR 

一個批處理文件,然後內的不同批次文件,CALL commands.bat,只能執行第2行或第4行的命令,而不知道這些行上有什麼內容?

+0

是的,使'echo Hola'和'echo Bonjour'有條件的,依賴於某個參數,並在調用'commands.bat'時,發送該參數。 – adarshr

+0

http://commandwindows.com/batchfiles-branching.htm – sehe

+0

編輯我的問題。遺漏了一個重要的細節:通過行號呼叫它們,而不是通過它們的字符串包含 – Mechaflash

回答

2

這裏是wh在我的意思是在我的意見。

master.bat

echo abcd 
echo hello 
echo notepad 
echo public 
echo wind 
echo balance 

command.bat

@echo off 

more +3 master.bat > temp.bat & temp.bat 

打印下面我。

public 
wind 
balance 

要從第一行開始,請使用+0

如果你想通過命令行發送這個號碼,這裏是一個稍作修改的版本:

command.bat

@echo off 

more +%1 master.bat > temp.bat & temp.bat 

你可以用諸如command.bat 0或命令運行上面command.bat 3

+1

如果你只想執行第n行而不是n-through-EOF,你可能想看看http://stackoverflow.com/questions/6409869/echo-the-nth-line-from-a- text-file-where-n-is-a-command-line-argument並將其與我的答案相結合以獲得你想要的。 – adarshr

+0

我要從你的鏈接帖子中使用傑布的回答。設置答案。 – Mechaflash

1

我以前知道(回來時,批處理文件中風靡一時)

SET JUMPTO=HOLA 
goto BRANCH_%JUMPTO% 

:BRANCH_HELLO 
echo HELLO 
GOTO :QUIT 

:BRANCH_HOLA 
echo HOLA 
GOTO :QUIT 

:BRANCH_KONICHIWA 
echo KONICHIWA 
GOTO :QUIT 

:BRANCH_ANYONGHASEYO 
echo ANYONGHASEYO 
GOTO :QUIT 

:BRANCH_BONJOUR 
echo BONJOUR 
GOTO :QUIT 

:BRANCH_ 
echo Illegal branch?! 

:QUIT 

它變得更加intesting當你更換例如第一行一個整潔的小竅門SET JUMPTO=%1

一些測試輸出:

E:> \ TEST.CMD HELLO

E:\>SET JUMPTO=HELLO 

E:\>goto BRANCH_HELLO 

E:\>echo HELLO 
HELLO 

E:\>GOTO :QUIT 

E:> \ TEST.CMD

E:\>SET JUMPTO= 

E:\>goto BRANCH_ 

E:\>echo Illegal branch?! 
Illegal branch?! 
E:\> 
1

請將您的意見作爲解決方案給我。它的工作原理,但我知道有些人不喜歡管道find命令任何=/

REM Contents of COMMANDS.BAT 
ECHO HELLO & ::1 
ECHO HOLA & ::2 
ECHO KONICHIWA & ::3 
ECHO ANYONGHASEYO & ::4 
ECHO BONJOUR & ::5 

REM Command to perform ECHO KONICHIWA out of COMMANDS.BAT 
CALL C:\COMMANDS.BAT | FIND "3" 
+0

這是一個好主意!我會添加另一個類似於你所做的答案。 – adarshr

0

這類似於Mechaflash's答案,但利用了findstr代替find

master.bat

echo abcd &rem line1 
echo hello &rem line2 
echo notepad &rem line3 
echo public &rem line4 
echo wind &rem line5 
echo balance &rem line5 

命令。蝙蝠

@echo off 

findstr line%1 master.bat > temp.bat & temp.bat 
1

更重要的是,我發現這個昨天玩弄它:

REM Contents of COMMANDS.BAT 
ECHO HELLO & ::1 
ECHO HOLA & ::2 
ECHO KONICHIWA & ::3 
ECHO ANYONGHASEYO & ::4 
ECHO BONJOUR & ::5 

-

REM Command to perform ECHO KONICHIWA out of COMMANDS.BAT 
FINDSTR ::3 COMMANDS.BAT | START /B 

這樣我就不必輸出線到另一個蝙蝠文件,它只是立即運行命令。