zoukankan      html  css  js  c++  java
  • DOS批处理命令-call命令

    call命令

    在批处理中调用别的批处理或者可运行程序或者

    バッチ プログラムを別のバッチ プログラムから呼び出します。

    语法

    1、CALL [驱动盘符:][路径]文件名 [参数]

    调用并执行[驱动盘符:][路径]文件名对应的处理程序,并将参数传递给该处理(参数之间用空白字符隔开)

    这样就支持了bat程序的扩展

    例如,我们可以调用bat,vbs,exe等处理来扩展bat程序的处理能力。

    @echo off
    call F:	mpcalled.bat "hello world"

    在路径【F: mp】下面建个【called.bat】文件

    文件内添加以下代码

    @echo off
    echo %1

    * %1是输出传递该处理的第一个参数

    运行结果为:

    "hello world"

    在例如,我们使用记事本来打开我们called.bat文件

    notepad a.bat

    执行上面这条语句,就会使用记事本来打开当前路径下的a.bat文件。

    2、CALL :标号 引数

    将引数传递给标号指定的处理,并将执行标号指定的处理,然后返回调用处,继续执行下面的处理。

    @echo off
    call :called "test call"
    
    :called
    echo begin called
    echo %1
    echo end called

    运行结果(a.bat a.bat):

    begin called
    "test call"
    end called
    begin called
    a.bat
    end called

    发现标签内的部分被执行了两边。投一次是call调用的时候执行的("test call"),call执行后,bat顺序执行以后,接下来是继续执行下标号的内容(a.bat

    解决这个问题,我们需要在我们需要终止的时候,添加一个【exit /b】出来

    程序修改以后:

    @echo off
    call :called1 "test call1"
    call :called2 "test call2"
    
    exit /b
    
    :called1
    SETLOCAL
        echo %1
        exit /b
    ENDLOCAL
    
    :called2
    SETLOCAL
        echo %1
        exit /b
    ENDLOCAL

    执行结果:

    "test call1"
    "test call2"

    看到这个地方执行状况,你不是觉得这个东西很像一个函数呢?

    应该说这就是一个函数。以后我们想提取函数的时候就这么写了。

  • 相关阅读:
    [NOI Online 2021 提高组] 愤怒的小 N
    CF1474F 1 2 3 4 ...
    CF1466H Finding satisfactory solutions
    CF1336F Journey
    [PKUSC2021]代金券
    如何科学地设计对拍随机种子
    CF1168E Xor Permutations
    「JOISC 2019 Day2」两种运输
    springboot json参数
    springboot整合webserver应用
  • 原文地址:https://www.cnblogs.com/gekal/p/3217773.html
Copyright © 2011-2022 走看看