`
runfeel
  • 浏览: 935885 次
文章分类
社区版块
存档分类
最新评论

dos bat 自定义函数

 
阅读更多

http://blog.csdn.net/linux__kernel/article/details/7482945

:MAIN

@echo off

set FILE_NAME=d:\zengzhaonong
call :DEL_FILE %FILE_NAME%

set FILE_NAME=d:\abc
call :COPY_FILE %FILE_NAME%

GOTO:EOF



:DEL_FILE
if exist "%1" (
echo del %1
) else (
echo %1 does not exist!
)
pause
GOTO :EOF


:COPY_FILE
if exist "%1" (
echo copy %1
) else (
echo %1 does not exist!
)
pause
GOTO :EOF


echo zengxiaolong
echo zengxiaolong
echo zengxiaolong

-------------------------------------

GOTO:EOF新人还不会用的请看这里

http://www.cn-dos.net/forum/viewthread.php?tid=36127&fpage=1&highlight=eof

本文来自死性不改的网志 http://www.clxp.net.cn 转载请保留此申明!

关于同一批处理使用多个同样的命令,把这个用了多次的批处理改为一个子程序,用 call调用。
具体写法是
goto :eof
:一个标记
批处理内容
goto :eof
调用子程序的方法是
call :一个标记

另外要注意,子程序要放到脚本的最后,如果有多个子程序用:标记来划分就可以了。
如果是同一个功能的命令的话,可以放到一个子程序里,如果是不同功能的命令的话要放两个子程序


例1:
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
此例子视为同一个功能的命令,那么就写
goto :eof
:结束程序(这是注释哈,自己随便定义的,这就是那个标记)
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
goto :eof
这就是一段同一个功能的命令并连续执行的子程序。。。
在使用的时候直接用 call :结束程序 来调用此段子程序。


那么另一段功能不同,而且也是一个同一批处理使用多次的命令要组成子程序就要用goto :eof分隔开,
并用:标记,来区分。


例2:
下面这段代码我用了多次
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
这段代码也用了多次
md c:\1.txt
md c:\2.txt
md c:\3.txt
但是并不是结束完程序,就开始建立文件,中间还有其他语句,那么把他们改为子程序来调用如何写呢?看下面
goto :eof
:结束程序
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
goto :eof(不同功能的子程序要用goto :eof来分隔一下,用:标记来区分。)
:建立文件
md c:\1.txt
md c:\2.txt
md c:\3.txt
goto :eof

调用子程序的时候用 call :标记 来使用,
比如
call :结束程序
call :建立文件

为什么两个都是常用的命令,却要用goto :eof 来分隔开呢。。
当然是有原因的了。。因为这两段程序“结束程序”和“建立文件”两个子程序,是在同一个批处理里用了好多次。
但是他们并不是同时使用的,也就是说,并不是结束完程序,就建立文件,而是结束完程序,还有其他内容。然后
又用到建立文件,所以要用goto :eof来分隔一下。

普通的跳转goto 执行跳转是直接 goto 标记
但是子程序调用是 goto :标记 标记前面多了个冒号。。所以要注意。。。

表达的不是很明白,有点晕哈~~
写个完整的例子看看吧。
对照例1的
ping 192.168.0.1
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
ping 192.168.0.2
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
ping 192.168.0.3
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
exit
批处理的意思就是
ping完192.168.0.1 后,关闭程序1.exe 2.exe 3.exe 、
ping完192.168.0.2 后,关闭程序1.exe 2.exe 3.exe 、
ping完192.168.0.3 后,关闭程序1.exe 2.exe 3.exe 、
退出

那么“关闭程序1.exe 2.exe 3.exe”这段代码在同一程序里用了3次,写这么长,多麻烦。。那么我们给他加进
子程序里去....

ping 192.168.0.1
call :结束程序
ping 192.168.0.2
call :结束程序
ping 192.168.0.3
call :结束程序
exit

goto :eof
:结束程序
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
goto :eof

使用子程序,和不使用子程序的代码,看起来有没有规范些,清爽些呢?
这只是简单的脚本,如果是一个很麻烦的命令,一个脚本里用了N次,如果每次都写同样的代码,,会很烦的,所以
还是建议大家在同一个批处理使用过多次的命令或语句,就搞成子程序来调用好了。

刚才例2就有点麻烦了。。。写下看看。
ping 192.168.0.1
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
ping 192.168.0.2
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
ping 192.168.0.3
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
ping 192.168.0.4
md c:\1.txt
md c:\2.txt
md c:\3.txt
ping 192.168.0.5
md c:\1.txt
md c:\2.txt
md c:\3.txt
ping 192.168.0.6
md c:\1.txt
md c:\2.txt
md c:\3.txt
exie
批处理的意思就是
ping完192.168.0.1 后,关闭程序1.exe 2.exe 3.exe 、
ping完192.168.0.2 后,关闭程序1.exe 2.exe 3.exe 、
ping完192.168.0.3 后,关闭程序1.exe 2.exe 3.exe 、
ping完192.168.0.4 后,建立名为1 2 3的三个文本 、
ping完192.168.0.5 后,建立名为1 2 3的三个文本 、
ping完192.168.0.6 后,建立名为1 2 3的三个文本 、
退出

这个就看出麻烦来了吧。。。
那好,,把用了N次的命令写进子程序里

ping 192.168.0.1
call :结束程序
ping 192.168.0.2
call :结束程序
ping 192.168.0.3
call :结束程序
ping 192.168.0.4
call :建立文件
ping 192.168.0.5
call :建立文件
ping 192.168.0.6
call :建立文件
exit

goto :eof
:结束程序
taskkill /f /im 1.exe
taskkill /f /im 2.exe
taskkill /f /im 3.exe
goto :eof
:建立文件
md c:\1.txt
md c:\2.txt
md c:\3.txt
goto :eof
我都看懂了蛤 你们不会还不会吧 蛤蛤 终于明白了GOTO:EOF的用法 希望 和我一样迷糊的朋友学会蛤

分享到:
评论

相关推荐

    BAT批处理脚本-加密解密-解密.zip

    它由一系列DOS命令组成,可以批量执行任务,节省手动操作的时间。在“解密.bat”这个例子中,我们可以推测这是一段用于解密文件的批处理代码。 在Windows环境下,批处理脚本通常使用`.bat`扩展名,运行时会逐行执行...

    DOS手册,DOS手册,DOS

    4. **DOS功能调用**:通过调用DOS提供的函数接口实现更复杂的程序设计。 5. **批处理文件**:.BAT文件,允许组合多个DOS命令,实现自动化任务。 对于DOS初学者,"DOS学习手册大全(入门-进阶+软件).txt"是一个宝贵的...

    Excel-VBA宏编程实例源代码-以Shell函数启动bat文件并执行Dir命令.zip

    这个“Excel-VBA宏编程实例源代码-以Shell函数启动bat文件并执行Dir命令.zip”是一个示例,它展示了如何利用VBA宏来调用系统外壳(Shell)函数,进而启动一个批处理(bat)文件,并执行内部的`dir`命令。接下来,...

    bat学习笔记1

    - **批处理函数**:利用`goto`和标签实现类似函数的功能。 - **命令行参数**:bat文件可以接收命令行参数,如`mybat.bat arg1 arg2`,通过`%1`, `%2`访问。 7. **学习资源** 学习bat脚本并不复杂,可以从微软...

    最全批处理.bat_cmd_

    - **函数**:虽然批处理不直接支持函数的概念,但可以通过调用包含特定逻辑的批处理文件来模拟函数的行为。 - **错误处理**:使用`errorlevel`变量来检查上一个命令的退出状态,从而进行错误处理。 #### 五、常见...

    Bat学习笔记大全

    - **自定义函数**:通过在批处理文件中定义带标签的代码段,并使用`goto`跳转到这些标签,可以实现类似函数的功能。 - **文件操作**:利用DOS命令如`copy`、`move`、`del`等来处理文件和目录。 - **交互式输入**:...

    BAT批处理学习-数值计算-random随机数生成器.zip

    批处理脚本是基于DOS命令行环境的文本文件,它包含了多个操作系统命令,通过运行这些命令来完成特定的任务。在Windows中,用户可以通过记事本等文本编辑器编写BAT脚本,然后将其保存为.bat或.cmd扩展名的文件,以便...

    BAT批处理文件编辑器

    1. **代码高亮**:编辑器提供了对BAT语法的高亮显示,有助于用户快速识别不同的命令元素,如关键字、变量和函数,提高阅读和编写效率。 2. **自动完成**:具备智能提示功能,当用户输入命令或参数时,编辑器可以...

    BAT、VBS、代码、教程、整人

    批处理(BAT)文件是基于DOS命令的脚本,用于执行一系列命令行操作。在Windows系统中,用户可以通过编写简单的文本文件,以.bat为扩展名,来创建自定义的任务或操作,例如文件的复制、移动、删除等。由于批处理文件...

    BAT转EXE.rar

    标签 "BAT转EXE.rar" 进一步强调了这个压缩包的内容与转换工具相关,用户可以利用其中的源码来理解转换过程或者自定义自己的转换工具。 在压缩包内的 "易语言BAT转EXE源码" 文件,我们可以预期它包含了以下关键知识...

    BAT批处理精华

    在Windows系统中,批处理文件通常以`.bat`或`.cmd`为扩展名,它允许用户通过编写简单的文本文件来组合多条DOS命令,提高工作效率。 标题“BAT批处理精华”指的是这个压缩包可能包含了一些高级或者实用的批处理技巧...

    BAT批处理脚本-提示窗口进度条-模拟2K开机进度条.cmd.zip

    `cmd`文件中的命令可以包括系统内置的DOS命令,如`copy`, `del`, `ren`等,也可以包含一些自定义的函数或者调用其他可执行程序。在"模拟2K开机进度条.cmd"这个脚本中,可能使用了`echo off`关闭命令回显,`color`...

    扫雷 for DOS

    7. **头文件引用**:如“mouse.h”、“DISPHZ.H”和“drawform.h”可能是自定义的头文件,包含游戏特定的函数声明,比如鼠标操作函数、显示辅助函数等。 8. **中文字库**:在DOS环境下显示汉字,可能使用了特定的...

    dos 程序 模拟黑客帝国的数码雨

    然后,可能使用`TIMEOUT`或自定义延迟函数(通过`FOR /L`循环和`PING`命令等实现)来控制字符下落的速度。 程序可能会使用一个循环结构,如`FOR`循环,来重复打印字符序列。每次循环时,都会调整字符的位置或者改变...

    C语言开发详解,DOS命令扩充、屏幕设计

    3. **批处理文件**:DOS支持批处理文件(.BAT),可以通过在其中包含自定义的DOS命令,使得一系列操作自动化。 4. **注册自定义命令**:在DOS启动时,可以加载一个包含自定义命令处理函数的程序,使其在命令提示符...

    BAT批处理脚本开发工具

    8. **宏和函数支持**:提供类似于高级语言的宏定义和函数调用,提高代码复用性。 9. **错误处理**:提供错误处理机制,如TRY/CATCH结构,增强脚本的健壮性。 10. **用户界面**:部分工具可能允许创建简单的图形...

    BAT批处理文件语法.rar

    9. **函数和子批处理**:虽然批处理文件不直接支持函数,但可以通过`call`命令模拟函数效果,调用其他批处理文件作为子程序。 10. **错误处理**:`set errorlevel`和`if errorlevel`结合使用,可以捕获和处理命令...

    BAT批处理脚本-文本操作-变色+翻滚字符.cmd.zip

    在DOS中,我们可以使用CLS命令来清除屏幕,然后通过某种循环机制和延时函数(如TIMEOUT命令或自定义的延迟代码)来逐行显示文本,模拟滚动效果。这种技术常用于创建简单的滚动公告或者信息提示。 更深入地,批处理...

    Excel_VBA程序开发自学通

    Excel VBA 程序开发自学通是指 Excel VBA 编程语言的一种自动化语言,它可以使常用的程序自动化,类似于 DOS 中的批处理文件(后缀名“.bat”)。Excel VBA 具有多种功能和优势,如可以从身份证号获取个人信息,实现...

    BAT 批处理教程 详细教程。一学就懂

    - **自定义函数**:通过定义标签(Label)和`goto`命令实现简单的函数调用机制。 #### 五、示例代码解析 假设有一个简单的批处理脚本,用于备份指定目录下的所有文件到另一目录: ```batch @echo off echo 开始...

Global site tag (gtag.js) - Google Analytics