批处理脚本 - 调用另一个批处理脚本来调用行来执行某些命令

时间:2011-09-15 14:42:38

标签: batch-file call

是否可以使用一堆命令创建批处理文件(commands.bat)

ECHO HELLO
ECHO HOLA
ECHO KONICHIWA
ECHO ANYONGHASEYO
ECHO BONJOUR

,然后在另一个批处理文件CALL commands.bat内,只在第2行或第4行执行命令而不知道这些行上的内容是什么?

5 个答案:

答案 0 :(得分:2)

这就是我在评论中的意思。

<强> 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 0command.bat 3等命令运行上述内容。

答案 1 :(得分: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

当您用例如第一行替换第一行时,它变得更加强烈。 SET JUMPTO=%1

一些测试输出:

  

E:&gt;。\ test.cmd HELLO

E:\>SET JUMPTO=HELLO

E:\>goto BRANCH_HELLO

E:\>echo HELLO
HELLO

E:\>GOTO :QUIT
     

<强> E:&GT; \ TEST.CMD

E:\>SET JUMPTO=

E:\>goto BRANCH_

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

答案 2 :(得分: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"

答案 3 :(得分: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

这样我就不必将该行输出到另一个bat文件,它只是立即运行命令。

答案 4 :(得分: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

<强> command.bat

@echo off

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