㈠ 批处理CALL,调用其他批处理子程序的用法
我觉得问题出现在e的身上,如果你有学过C语言的话应该比较好理解。就是C只是在2.cmd这个文件中,作为里面的一个局部的参数,调用了1.cmd,虽然在1.cmd里面做了运算,但运算的结果是没有传递出来的。所以e的值还是为0.就好像C要用return 把参数值传回来那样,又或者,如果e是一个全局变量的话,或许还行。不过在DOS里面我不知道有没有全局变量这个概念。所以,你要实现这种值传递的话,恐怕,用批处理不是什么好的选择。如果你只是想学习一下call的调用的话,基本上你已经会了
后来想想,或许能用批处理中的errorlevel作为返回值。于是把你的批处理修改了一下,代码如下:
一、1.cmd
@echo off
set /a t=%1+1
set errorlevel=%t%
GOTO :EOF
二、2.cmd
@ECHO OFF
set /a e=0
call 1.cmd 22
set e=%errorlevel%
echo %e%
pause>nul
这样就实现了值传递了,如有需要,我们可以探讨一下,我的QQ:243488442
㈡ 批处理call的使用:语句
你代码没加入中断或退出,所以会继续往下执行到 1:的位置,所以会多输出一个1,然后通过goto :eof退出了脚本(此时因为非call调用,goto :eof将退出脚本)
修改方法:
在 call 3: 下面加上 pause 或exit 即可
㈢ 批处理call命令
用start。先cd Data,再start cmd /c b.bat,也可以直接用绝对路径,比如在cd之前先保存%1%或者用push命令。call只能调用脚本内部的代码(我不知道能不能调用外部的)。
㈣ DOS批处理里调用CALL命令的先后问题
呵呵……好说好说……
把所有的call去掉即可顺序执行,即执行1后,等1退出后再执行2……
㈤ 求助批处理call语句解释
call一般用于2钟用途
1. 跳转标签
例:call:标签1
执行到这一种语句,程序脚本会自动匹配到指定的标签:标签1
在从标签那一行继续往下执行(程序由上往下执行)
例:
@echooff
call:text1
echo123
pause
:text1
echo234
pause
例如这一段代码,程序最终会显示字符串234,字符串123则不会显示出来
因为上一句使用了call语句,用于跳转至指定的标签
2. 传递参数
例A:call:text1123
例B:calla.bat123
这2个语句都会传递一个参数,参数是用变量形式传递,%1-%9,默认是9个参数
在使用参数的时候,根据程序需要,都会有一个返回值参数
这个返回值参数,一般用于比较特殊的程序思路,关于返回值的用法,一句二局说不明白
这里我指跟你说一下一般的传递参数的使用
例A
@echooff
call:函数A123
echo%Num%
pause
:函数A
setNum=123
set/aNum+=%1
exit/b
这一段代码,函数A,您可以当做一个函数模块,功能用于计算
如果是一些大型的脚本,方便长期维护,这样的写法是非常好的
call 函数A 标签 传递一个数值123
那么函数A就会吧这个数值用于计算,最后返回回去,得儿最终显示结果
那么例B,其实跟例A用法其实一样,但是里面存在了一个返回值的特性
如果您想了解返回值,多研究exit的语句,纯手打!希望对您有帮助!
㈥ 求批处理中Call详细用法并有例子加以说明,谢谢
从批处理程序调用另一个批处理程序。
CALL [drive:][path]filename [batch-parameters]
batch-parameters 指定批处理程序所需的命令行信息。
如果命令扩展名被启用,CALL 会如下改变:
CALL 命令现在将卷标当作 CALL 的目标接受。语法是:
CALL:label arguments
一个新的批文件上下文由指定的参数所创建,控制在卷标被指定
后传递到语句。您必须通过达到批脚本文件末两次来 "exit" 两次。
第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次
会退出批脚本。键入 GOTO /?,参看 GOTO : EOF 扩展名的描述,
此描述允许您从一个批脚本返回。
另外,批脚本文本参数参照(%0、%1、等等)已如下改变:
批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)
批参数(%n)的替代已被增强。您可以使用以下语法:
%~1 - 删除引号("),扩充 %1
%~f1 - 将 %1 扩充到一个完全合格的路径名
%~d1 - 仅将 %1 扩充到一个驱动器号
%~p1 - 仅将 %1 扩充到一个路径
%~n1 - 仅将 %1 扩充到一个文件名
%~x1 - 仅将 %1 扩充到一个文件扩展名
%~s1 - 扩充的路径指含有短名
%~a1 - 将 %1 扩充到文件属性
%~t1 - 将 %1 扩充到文件的日期/时间
%~z1 - 将 %1 扩充到文件的大小
%~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1
扩充到找到的第一个完全合格的名称。如果环境
变量名未被定义,或者没有找到文件,此组合键会
扩充到空字符串
可以组合修定符来取得多重结果:
%~dp1 - 只将 %1 扩展到驱动器号和路径
%~nx1 - 只将 %1 扩展到文件名和扩展名
%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,
并扩展到找到的第一个文件的驱动器号和路径。
%~ftza1 - 将 %1 扩展到类似 DIR 的输出行。
在上面的例子中,%1 和 PATH 可以被其他有效数值替换。
%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*
使用
来自:cmd ——> call /? > xxx.txt
回答者: bmgeng - 三级 2009-5-16 10:57
检举 Call语句调用另一个(子)程序,并等待其执行后返回正确或错误结果.
返回的位置是Call语句的末尾.
Start语句调用另一个(子)程序,但是不需返回.
请比较:
call attrib -h -r c:\auto.bat
start attrib -h -r c:\auto.bat
或:
call attrib -h -r c:\autoexec.bat
start attrib -h -r c:\autoexec.bat
回答者: carlkang - 二级 2009-5-19 18:09
检举 call主要用来执行子程序或另一个bat文件
call format就相当于format
㈦ 请详细讲解下批处理文件echo、@、call、pause、rem 命令的具体用法以及含义
1、
显示信息,或将命令回显打开或关上。
ECHO [ON | OFF]
ECHO [message]
要显示当前回显设置,键入不带参数的 ECHO。
从批处理程序调用另一个批处理程序。
2、
CALL [drive:][path]filename [batch-parameters]
batch-parameters 指定批处理程序所需的命令行信息。
如果命令扩展名被启用,CALL 会如下改变:
CALL 命令现在将卷标当作 CALL 的目标接受。语法是:
CALL:label arguments
一个新的批文件上下文由指定的参数所创建,控制在卷标被指定
后传递到语句。您必须通过达到批脚本文件末两次来 "exit" 两次。
第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次
会退出批脚本。键入 GOTO /?,参看 GOTO : EOF 扩展名的描述,
此描述允许您从一个批脚本返回。
另外,批脚本文本参数参照(%0、%1、等等)已如下改变:
批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)
批参数(%n)的替代已被增强。您可以使用以下语法:
%~1 - 删除引号("),扩充 %1
%~f1 - 将 %1 扩充到一个完全合格的路径名
%~d1 - 仅将 %1 扩充到一个驱动器号
%~p1 - 仅将 %1 扩充到一个路径
%~n1 - 仅将 %1 扩充到一个文件名
%~x1 - 仅将 %1 扩充到一个文件扩展名
%~s1 - 扩充的路径指含有短名
%~a1 - 将 %1 扩充到文件属性
%~t1 - 将 %1 扩充到文件的日期/时间
%~z1 - 将 %1 扩充到文件的大小
%~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1
扩充到找到的第一个完全合格的名称。如果环境
变量名未被定义,或者没有找到文件,此组合键会
扩充到空字符串
可以组合修定符来取得多重结果:
%~dp1 - 只将 %1 扩展到驱动器号和路径
%~nx1 - 只将 %1 扩展到文件名和扩展名
%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,
并扩展到找到的第一个文件的驱动器号和路径。
%~ftza1 - 将 %1 扩展到类似 DIR 的输出行。
在上面的例子中,%1 和 PATH 可以被其他有效数值替换。
%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*
使用
3、
暂停批处理程序,并显示以下消息:
请按任意键继续. . . 在批处理文件或 CONFIG.SYS 里加上注解或说明。
4、
REM [comment]
㈧ 批处理Call命令能给我举例说明吗
楼主没有把代码复制全啊
首先要开启变量延
解释问题
call :assoc %%i tpc %%j 用标签运行 赋值 %1 %2 %3 在这个标签 %1是 %%i %2 是 tcp %3是 %%j
运行 :assoc 得到返回值再显示
其他例句
@echooff
for/f"delims=0"%%iin('help')docall:s%%i
pause
:s
echo所有帮助
echo%1
㈨ 批处理(bat)请教,call命令用法
上一级目录不必用call命令,cd..就改变当前目录到上一级了cd..\..就上两级了
pushd ..\..
echo %cd%
popd
如果是引用需要, 直接用 ..\..\代路径就行了这称为相对路径
㈩ 如何在.bat 中call sh 脚本
java执行jar包中的class命令为:java-classpathxxx.jarpackage.MyTools注意:该MyTools中必须包含main函数.例子:1.业务代码MyTools类含有main函数,包路径为com.my.test,它引用了oracle的驱动classes12.jar最终打包成Tools.jar2.新建start.bat文件,内容如下(注意要引入classes12.jar,以分号间隔)java-classpathTools.jar;classes12.jarcom.my.test.MyToolspause同样,sh脚本:要进行dos2unix#!/bin/shcmddir="`dirname$0`"