【问题标题】:Batch Script - CALL another batch script to call line to perform certain command批处理脚本 - 调用另一个批处理脚本来调用行以执行某些命令
【发布时间】:2011-11-17 23:10:38
【问题描述】:

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

ECHO HELLO
ECHO HOLA
ECHO KONICHIWA
ECHO ANYONGHASEYO
ECHO BONJOUR

,然后在不同的批处理文件中,CALL commands.bat 并且只执行第 2 行或第 4 行的命令而不知道这些行上的内容?

【问题讨论】:

  • 是的,使 echo Holaecho Bonjour 有条件,依赖于某个参数,并在调用 commands.bat 时,发送该参数。
  • 编辑了我的问题。遗漏了一个重要的细节:通过行号而不是字符串包含的内容来调用它们
  • @sehe 我不确定你想指出我的意思,即使是最初的问题。
  • @Mechaflash 你可以做一件事。有一个主 commands.bat,它将只包含 echo 语句的列表。根据您可能收到的行号(或范围),将该行号中的内容复制到文件末尾到一个单独的文件中,temp.bat 并执行它。

标签: batch-file call


【解决方案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:>.\test.cmd 你好

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:\>

【讨论】:

    【解决方案2】:

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

    ma​​ster.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 等命令运行上述内容。

    【讨论】:

    • 如果您只想执行第 n 行而不是 n-through-EOF,您可能需要查看 stackoverflow.com/questions/6409869/… 并将其与我的答案结合以获得您想要的。跨度>
    • 我将使用您链接帖子中 Jeb 的回答。设置答案。
    【解决方案3】:

    作为解决方案,请给我您的意见。它有效,但我知道有些人不喜欢将 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"
    

    【讨论】:

    • 这是个好主意!我将添加另一个与您所做的类似的答案。
    【解决方案4】:

    这类似于Mechaflash's 答案,但使用findstr 而不是find

    ma​​ster.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
    

    【讨论】:

      【解决方案5】:

      更好的是,我昨天发现了这个玩弄它:

      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 文件,它只是立即运行命令。

      【讨论】:

        猜你喜欢
        • 2014-12-03
        • 2015-10-11
        • 1970-01-01
        • 1970-01-01
        • 2013-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多