比特派官方下载安装|bat
BAT批处理基本命令总结 - 知乎
BAT批处理基本命令总结 - 知乎首发于电子电路开发学习切换模式写文章登录/注册BAT批处理基本命令总结王超BAT文件 bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名- 为 .bat 或 .cmd。在命令提示下输入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。 访问网址explorer http://www.baidu.com打开文件夹或文件打开文件夹start D:\文件夹1打开文件start D:\文件夹1\test.txt删除文件删除当前目录下的test.txt文件del test.txt删除上级目录下的test.txt文件del ..\test.txt删除当前目录TEST文件夹下的所有.o文件del .\TEST\*.o复制文件复制当前目录下所有txt文件到文件夹1,文件夹1需要已经创建 copy *.txt 文件夹1复制文件1到文件夹1、文件2到文件夹2、支持多个文件操作,同时支持上级及下级文件路径copy file1.txt 文件夹1
copy file2.txt 文件夹2复制桌面文件到D盘根目录,使用绝对路径copy C:\Users\user\Desktop\welcome.txt D:\重命名修改文件扩展名,所有txt扩展名改为mp3扩展名ren *.txt *.mp3
ren *.gif *.jpg修改文件名称,把aa.txt改为bb.cren aa.txt bb.c创建文件夹创建三个文件夹1md 文件夹1
md 文件夹2
md 文件夹3创建文件当前目录创建a.txt文件cd.>a.txt把hex文件的第一行之后的内容写入新文件more +1 "..\OBJ\output.hex">"..\OBJ\flash_after_del_hex_line1.hex"删除Keil编译产生的垃圾文件%删除OBJ目录下的多余文件%
del ..\OBJ\*.lnp /s
::del ..\OBJ\*.opt /s ::不允许删除JLINK的设置
del ..\OBJ\*.__i /s
del ..\OBJ\*.crf /s
del ..\OBJ\*.o /s
del ..\OBJ\*.d /s
%删除USER目录下的多余文件%
del *.map /s
del *.lst /s
del *.dep /s
echo 编译产生的其他文件已经删除提取文件名提取当前目录下扩展名为mp3的文件名,输出到mp3文件名.txtdir *.mp3 /b>mp3文件名.txt提取当前目录下的“深度睡眠”文件夹下的所有mp3文件名到文件dir .\深度睡眠\*.mp3 /b>mp3文件名.txt提取当前目录下所有文件的文件名到a.txtdir c:\*.* >a.txt输出文件的绝对路径信息输出当前目录下mp3文件dir *.mp3/b/s>MP3文件信息.txtMP3文件信息.txt的内容D:\Music\深度睡眠\01.细水长流.mp3
D:\Music\深度睡眠\02.花絮轻撒.mp3
D:\Music\深度睡眠\03.爱的轮回.mp3
D:\Music\深度睡眠\04.月影摇曳.mp3
D:\Music\深度睡眠\05.逐梦.mp3
D:\Music\深度睡眠\06.萦绕天使.mp3
D:\Music\深度睡眠\07.夜宴.mp3开启电脑热点开启电脑无线,设置用户名和密码netsh wlan set hostednetwork mode=allow LAPTOP key=1234567890
netsh wlan start hostednetwork
pause关闭热点netsh wlan stop hostednetwork
pause查看当前热点信息netsh wlan show hostednetwork
pause执行另一个批处理文件call c:\code\run.bat自动关机300s 后自动关机shutdown -s -t 300取消自动关机shutdown -a立刻重启shutdown -r -t 0自动休眠60s后休眠shutdown -h -t 60隐藏文件夹attrib +s +h D:\Secret取消隐藏文件夹attrib -s -h D:\Secretattrib命令attrib +/-r
attrib +/-a
attrib +/-s
attrib +/-h
+ 设置属性
- 清除属性
r 只读属性
a 存档属性
s 系统属性
h 隐藏属性历史精选文章:Jlink使用技巧之虚拟串口功能 Jlink使用技巧之读取STM32内部的程序 Jlink使用技巧之J-Scope虚拟示波器功能 Jlink使用技巧之单独下载HEX文件到单片机 百度智能手环方案开源(含源码,原理图,APP,通信协议等) elf格式转换为hex格式文件的两种方法 欢迎大家关注我的个人博客或微信扫码关注我的公众号http://weixin.qq.com/r/1ynN1TvER2Y4rX_293zF (二维码自动识别)编辑于 2020-02-26 15:26BAT(百度、阿里巴巴、腾讯)单片机批处理赞同 36728 条评论分享喜欢收藏申请转载文章被以下专栏收录电子电路开发学习公众号:电子电路开发学习,同步
互联网上说的 BAT 三强是什么意思? - 知乎
互联网上说的 BAT 三强是什么意思? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册互联网互联网上说的 BAT 三强是什么意思?关注者82被浏览297,823关注问题写回答邀请回答好问题2 条评论分享16 个回答默认排序赵灿通信行业产品经理,谋求向移动互联网侧转型 关注B=百度;A=阿里巴巴;T=腾讯;BAT是对三者的综述;“三强”顾名思义,是指在现阶段的国内互联网市场上,这三家公司在事实上取得了阶段性的领先,有着公认的江湖地位。不过,江山代有才人出,移动互联网行业这几年发展很快,虽然目前BAT地位稳固且积极谋求顺应时势,却不能断言它们能够持续领先。曾经的三强是新浪、搜狐、网易三大门户网站,现在是BAT,未来呢?让我们一起拭目以待!编辑于 2013-05-03 18:09赞同 1148 条评论分享收藏喜欢收起知乎用户BaiduAlibabaTencent发布于 2013-05-03 18:07赞同 22添加评论分享收藏喜欢
解放双手! bat 批处理自动化运行程序 - 知乎
解放双手! bat 批处理自动化运行程序 - 知乎切换模式写文章登录/注册解放双手! bat 批处理自动化运行程序Eric SunStay hungry, keep cool.bat 批处理脚本是 Windows 系统上用于批量执行任务的脚本,其后缀名为 .bat。利用批处理文件与“胶水语言” Python 相结合,能解决很多情况下程序的自动化运行问题,为学习、科研、工作上带来很大的便利。近来做科研项目,需要运行某一个模型软件数十次乃至上百次。此前对 bat 批处理的了解比较有限,借此机会完成项目的机会,对常用的 bat 脚本做了一个简单的入门学习。特此对过程中学习到的知识点作简要总结,也希望对未“入坑”者有所帮助。命令总结echo“echo”一词英文本意为“发出回声”、“产生回响”,大致相当于 Python 中的 print 函数,可以在 cmd 窗口中显示消息,也有打开和关闭回显的功能。常用的代码有以下两种:在屏幕上打印“hello world”echo hello world关闭运行命令本身的显示@echo off@加在其他命令行最前面,表示运行时不显示该命令行本身。@echo Now starting the model...call从一个批处理程序调用其他批处理程序,而不终止原来的程序。举个例子,下面的命令调用 Anaconda 的 activate.bat 脚本,使用该操作可以在 cmd 窗口中激活某一环境。call D:\Commonsoftware\Anaconda\Scripts\activate.bat
call activate myenv其中,myenv 是需要激活的环境名称。pause在执行完命令后显示“请按任意键继续···”字样。该命令一般用来调试程序,确保批处理代码在执行中没有出现任何问题。常放在 bat 文件末尾和其他想终止程序的地方。REMbat 文件注释。对应的 Notepad++ 的快捷键为 Ctrl+k (单行、多行注释)& Ctrl+q (区块注释)。if批处理中执行条件处理的语句。首先,需要了解 bat 文件中比较运算符的有效值。\begin{array}[b]{|c|c|c|c|} \hline \textbf{运算符}&\textbf{描述}&\textbf{运算符}&\textbf{描述}\\\hline \mathrm{EQU}&等于&\mathrm{LEQ}&小于或等于\\\hline \mathrm{NEQ}&不等于&\mathrm{GTR}&大于\\\hline \mathrm{LSS}&小于&\mathrm{GEQ}&大于或等于\\\hline \end{array} 下面来看一个例子。@echo off
set /a a=123
set /a b=456
if %a% geq %b% (
echo %a%^>=%b%
) else (
echo %a%^<%b%
)
pause需要注意的是,if 语句后的括号必须要写在与其同一行的末尾。此外,在进行字符串比较时,if 后加 /i 命令可强制字符串比较时忽略大小写。choice此命令本意是显示信息并暂停批处理程序,让用户在做一些交互的选择。比如 Anaconda 中安装 Python 包时的提示是否安装的 [y/n] 就是利用的这个命令。有时,利用此命令占用内存较小、计时较为精确的特点,可以用此命令进行计时,程序会等待特定的时间,再执行下面的命令。以下语句表示等待 10 秒再执行批处理程序。choice /t 10 /d y /n >nul值得注意的是,用该命令计时有个缺陷:只能计时 0~9999 秒之内的时间(约 2.7 小时,但一般情况还是够用的)。for循环命令。直接看代码:REM 1
@echo off
for %%a in (1, 1, 5) do (
echo %%a
)
pause执行结果:1
1
5以上代码表示,变量 a 在集合 (1, 1, 5) 中进行遍历,然后回显出值。@echo off
for /l %%a in (1, 1, 5) do (
echo %%a
)
pause执行结果:1
2
3
4
5以上代码表示,变量 a 从 1 开始,步长为 1,终值为 5,进行循环。两段代码的区别在于,第二段代码在 for 循环开始时,多了 /l 参数。setlocal启动批处理文件中环境变量的本地化。通俗地讲,该命令执行后会使得批处理程序对局部变量进行修改,而不是始终保持全局变量的值。如果这里没有看懂的话,请比较以下两段代码就清楚了:REM 1
@echo off
set /a a=123
if %a% equ 123 (
set /a a=%a%*2
echo %a%
) else (
echo %a% not equal to 123
)
pause执行结果为:123。REM 2
@echo off
set /a a=123
setlocal enableDelayedExpansion
if !a! equ 123 (
set /a a=!a!*2
echo !a!
) else (
echo !a! not equal to 123
)
pause执行结果为:246。执行结果差异的原因在于第 1 段代码没有开启环境变量的本地化,因此在设置变量值后,引用变量时仍然是全局变量的值;使用 setlocal 指令后,解决了这一问题。显然,第 2 段代码是我们预期的结果。比较这两段代码可以发现,使用 setlocal 主要需要注意以下两点:需要声明 setlocal enableDelayedExpansion ;变量引用形式均为 !a! 。taskkill结束某一进程。常用的有以下两种用法:结束已知应用名称的某一进程;结束已知进程码的某一进程。以关闭 Notepad++.exe 程序为例举些例子:REM 1
taskkill /im notepad++.exe
REM 2
taskkill /pid 1376 -t -f进程码可以通过任务管理器查询,或者通过 cmd 运行 tasklist 获取。参数 -t 表示结束该进程,-f 表示强制结束该进程及所有子进程。代码总结自动化运行 IPython有时想启动 Ipython 做个简单的计算或者验证,与打开 Spyder 或者 PyCharm 等 IDE 相比,此时调出 Ipython 最为方便省时间。但打开 Anaconda Prompt 又需要输入激活环境等命令,比较麻烦。使用下面的命令可以大大简化这样的问题。REM ip.bat
call D:\Commonsoftware\Anaconda\Scripts\activate.bat
call activate myenv
call jupyter qtconsole如果不想把脚本防在桌面,可以配置环境变量,使用 Win+R 快捷键输入批处理文件名 ip.bat 就能方便地打开 IPython。自动化运行 Jupyter Notebook与以上情景类似,使用以下代码,轻松打开 Jupyter Notebook:E:
cd E:
call D:\Commonsoftware\Anaconda\Scripts\activate.bat
call activate myenv
start chrome http://localhost:8888/tree
call jupyter notebook
pause默认的打开文件路径在 E 盘,当然可以根据个人情况进行修改~在 cmd 窗口中写 Python语句有时在命令行窗口中想做些简单的计算或文本处理,无需再打开 Python IDE,直接在 cmd 窗口中就可以写简单的 Python 程序:python -c "import numpy as np; print(np.arange(6))"自动化运行模型回到最初的目的应用场景,下面是自动化运行某一模型或者应用程序的示例代码。cyc 是运行次数,ti 是模型运行一次的持续时间,start 语句是新建一个 cmd 窗口运行程序,&& 表示程序先后进行,即先打开程序路径再运行程序,程序中应用 Python 脚本可以进行模型的前处理和后处理。@echo off
setlocal enabledelayedexpansion
set cyc=100
set ti=3000
call D:\anaconda3\Scripts\activate.bat
call activate myenv
python model_preprocess.py
for /l %% i in (1,1,!cyc!) do (
start cmd /c "cd ./AppPath && model.exe"
choice /t !ti! /d y /n >nul
taskkill /f /im model.exe
)
python model_postprocess.py
endlocal
taskkill /f /im cmd.exe小结通过本文,基本上对批处理有了个简单的入门,对某些参数功能不清楚时,在 cmd 窗口中输入 /? 是最简单快捷的查看文档的方式;有些时候在网上复制的代码不能直接在命令行及批处理文件中应用,应将其转化为 ANSI 编码后查看没有乱码后运行才不会出错;批处理文件作为 Windows 系统的自动化处理的利器,可以做到一些 Python 脚本不能做到或者不方便做到的事情,此时简单学些批处理可以大大提高工作效率和自动化水平,但是如果 Python 脚本可以做到的事采用 Python 更方便快捷,易于调试和维护。参考文献张亮清编著《DOS/BIOS高手真经》第2版bat中if语句的用法cmd-bat批处理命令延时方法发布于 2020-04-04 18:43windows脚本命令提示符 (cmd)批处理赞同 13813 条评论分享喜欢收藏申请
bat脚本:快速入门_bat代码教学-CSDN博客
>bat脚本:快速入门_bat代码教学-CSDN博客
bat脚本:快速入门
最新推荐文章于 2023-05-24 10:20:12 发布
csfchh
最新推荐文章于 2023-05-24 10:20:12 发布
阅读量3w
收藏
312
点赞数
67
分类专栏:
Scripts
文章标签:
windows
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/csfchh/article/details/106795352
版权
Scripts
专栏收录该内容
15 篇文章
21 订阅
订阅专栏
bat脚本全称batch脚本,也称批处理文件,是Windows系统默认支持的脚本语言。本文主要介绍windows bat脚本的基础语法以及一些常用功能的实现,通过这些基础操作的组合可以编写出强大的脚本工具。
目录
1. 常用命令介绍1.0 /? 获取命令帮助说明1.1 echo和@
1.2 rem和::1.3 call和start1.3.1 call使用场景1.3.1.1 调用脚本1.3.1.2 调用命令行字符串1.3.1.3 调用带返回值的子程序1.3.1.4 变量嵌套与命令嵌套(待完善)
1.3.2 start使用场景
1.4 pause1.5 errorlevel1.6 goto和:1.7 if条件1.8 for循环1.8.1 FOR循环的4个参数 `/d` `/l` `/r` `/f`1.8.1.1 参数 `/d`1.8.1.2 参数 `/l`1.8.1.3 参数 `/r`1.8.1.4 参数 `/f`
1.8.2 FOR循环中的变量1.8.2.1 变量 `~I`,删除首尾引号("),扩展 %I1.8.2.2 变量 `%~fI`,将 %I 扩展到一个完全合格的路径名1.8.2.3 变量 `%~dI`,仅将 %I 扩展到一个驱动器号1.8.2.4 变量 `%~pI`,仅将 %I 扩展到一个路径1.8.2.5 变量 `%~nI`,仅将 %I 扩展到一个文件名1.8.2.6 变量 `%~xI`,仅将 %I 扩展到一个文件扩展名1.8.2.7 变量 `%~sI`,扩展的路径只含有短名1.8.2.8 变量 `%~aI`,将 %I 扩展到文件的文件属性1.8.2.9 变量 `%~tI`,将 %I 扩展到文件的日期/时间1.8.2.10 变量 `%~zI`,将 %I 扩展到文件的大小1.8.2.11 变量 `%~$PATH:I`,查找列在路径环境变量的目录,并将 %I 扩展到找到的第一个完全合格的名称
1.9 setlocal 与 变量延迟1.10 常用符号1.10.1 `%` 批处理变量引导符1.10.2 `>` 重定向符1.10.3 `|` 命令管道符1.10.4 `^` 转义字符1.10.5 `&`、`&&`、`||` 命令组合1.10.6 `,`和`;`的区别1.10.7 % `!`变量延迟引用1.10.8 数学运算符
1.11 时间处理1.11.1 date和time1.11.2 时间延迟1.11.2.1 利用ping命令1.11.2.2 利用for循环1.11.2.3 利用vbs延迟函数1.11.2.4 利用goto循环1.11.2.5 利用timeout函数
1.11.3 一个定时任务模版1.11.4 系统定制任务
1.12 字符串处理1.12.1 中文乱码1.12.2 字符串截取1.12.3 字符串局部替换1.12.3 字符串拼接
1.13 网络管理1.13.1 ping网络嗅探1.13.2 netstat网络查看1.13.3 tracert路由跟踪
1.14 其他命令1.14.1 cls清空屏幕1.14.2 random随机数1.14.3 type显示文本文件内容1.14.4 where搜索文件所在的目录1.14.5 tasklist&taskkill进程管理
2. 文件操作2.1 文件(夹)创建2.2 文件(夹)删除2.3 文件(夹)重命名2.4 文件拷贝和移动2.5 文件(夹)查找2.5.1 dir打印指定目录下的文件列表2.5.2 tree以树状结构打印指定目录下的文件列表
2.5 文件内容查找2.5.1 find
2.6 文件目录切换
3. 界面相关3.1 title修改命令行窗口标题3.2 color修改命令行背景色、前景色3.3 修改命令行宽高3.4 设计一个用户菜单界面3.5 实现进度条
4. 变量4.1 系统变量4.2 环境变量4.3 批处理入参变量4.4 自定义变量4.5 设置网络代理
5. 调用三方应用程序5.1 调用ftp5.2 调用7-zip5.3 调用VBScript程序5.4 调用jar包5.5 调用exe程序
6. 转换为可执行文件6.1 转换成.com文件6.2 转换成.exe文件
7. 参考资料
1. 常用命令介绍
1.0 /? 获取命令帮助说明
格式:command /?
注意:
Windows 命令行不区分大小写Ctrl+C组合键来强行终止运行脚本
1.1 echo和@
echo:
回显命令内容 格式:echo [你的文字] 在命令行窗口会打印命令内容打开或关闭回显功能 格式:echo [{ on|off }]输出空行 格式:echo. 或echo, 或echo: [>文件] 相当于输入一个回车。可以作为其它命令的输入,比如echo.|time即相当于在TIME命令执行后给出一个回车。所以执行时系统会在显示当前时间后,自动返回到DOS提示符状态答复命令中的提问 比如:C:>ECHO Y|DEL A :.,相当于执行DEL A :*.*命令时,系统确认框中直接返回Y,从而执行下一步,免去手动确认的过程建立新文件或增加文件内容 格式:ECHO >文件名或ECHO 文件内容>>文件名;使喇叭鸣响 格式:ECHO ^G ^G是在dos窗口中用Ctrl+G或Alt+007输入,输入多个^G可以产生多声鸣响 @:表示本条命令不回显,仅在本条命令生效,优先级高于echo off;
示例:
:: ===基础使用===
:: 一般脚本执行时不需要打印每条命令的具体内容,所以推荐在脚本起始位置就设置关闭全局echo,需要显示信息时使用echo命令打印提示信息
@echo off
echo hello world
:: 开启全局echo回显
@echo on
:: ===高阶用法===
:: 使用echo创建文件
echo>test.bat
:: 使用echo为文件写数据,会覆盖
echo ::我是第1行>test.bat
:: 使用echo为文件追加内容,不覆盖
echo ::我是第2行>>test.bat
:: 输出换行符(空行)
echo. >>test.bat
:: 输出
call test.bat
:: type表示打印文件内容到窗口
type test.txt
1.2 rem和::
rem:注释,支持echo回显;:::注释,不支持echo回显,不能在()语句块中使用。
扩展:冒号后紧跟一个非字母数字的一个特殊符号其实都等价于双冒号,目的是使goto无法识别;
示例
@echo on
rem 这是注释内容,由于指定了echo on,命令行会打印这段注释
:: 这也是注释内容,但是不支持回显
@echo off
1.3 call和start
call:调用另一个批处理文件,如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令;start:批处理中调用外部程序的命令(该外部程序在新窗口中运行,批处理程序继续往下执行,不理会外部程序的运行状况),如果直接运行外部程序则必须等外部程序完成后才继续执行剩下的指令
1.3.1 call使用场景
1.3.1.1 调用脚本
:: 调用另一个脚本,并在执行结束后返回本脚本
:: filename 参数必须具有 .bat 或 .cmd 扩展名
call autoexec.bat 参数1 参数2
1.3.1.2 调用命令行字符串
:: 如果不用call,而直接运行%cmdstr%,将显示结果%aa%,而不是123456
set aa=123456
set cmdstr=echo %aa%
call %cmdstr%
pause
1.3.1.3 调用带返回值的子程序
这里重点关注getSum中shift的用法,默认右移1位,即shift等价于shift /1。 以本demo为例:%1在没有右移时表示第一个入参,在shift /1之后,%1指向的是原%2的入参。
@echo off
rem 调用getString子程序
call :getString return
echo return = %return%
pause
@echo off
set sum=0
call :getSum 1 2 3 4 5
echo sum = %sum%
pause
goto :eof
rem 利用入参实现返回值
:getString
set %1=from sub script
goto :eof
rem 利用全局变量实现返回值
:getSum
set /a sum+=%1
shift /1
if not "%1"=="" goto getSum
goto :eof
1.3.1.4 变量嵌套与命令嵌套(待完善)
比如设变量word为“abcdefghij”,变量num为“123456789” %word:~4,1%为e,其中4可以从变量num中取值,即%num:~3,1%,写成组合形式如下: %word:~%num:~3,1%,1% 经测试这种写法不能正确执行,写成%word:~(%num:~3,1%),1%同样不行,那么,怎么实现这种变量嵌套呢?这就必须结合命令嵌套。
什么是命令嵌套呢?简单的说,首先用一条dos命令生成一个字符串,而这个字符串是另一条dos命令,用call语句调用字符串将其执行,从而得到最终结果。
示例:
@echo off
set word=abcdefghij
set num=123456789
echo %word:~%num:~2,1%,1%
1.3.2 start使用场景
start命令示例:
:: 调用文件管理器打开D盘
start explorer d:\
:: 打开命令行窗口
start cmd
1.4 pause
暂停并运行显示:请按任意键继续. . . 要显示其他提示语,可以这样用:Echo 其他提示语 & pause > nul
1.5 errorlevel
程序返回码,格式:echo %errorlevel%。 每个命令运行结束,可以用这个命令行格式查看返回码,用于判断刚才的命令是否执行成功,成功为0(默认值),失败为1。
:: 调用脚本并打印执行结果
call autoexec.bat & echo %errorlevel%
1.6 goto和:
在批处理中允许以“:XXX”来构建一个标号,然后用GOTO XXX跳转到标号:XXX处,然后执行标号后的命令。执行逻辑有点类似于do…while,使用goto可以实现比for语句更复杂的循环逻辑。 示例:
@echo off
:: 打印1234
:start
set /a var+=1
echo var = %var%
if %var% leq 3 goto start
pause
1.7 if条件
语法格式:
IF [NOT] ERRORLEVEL number commandIF [NOT] string1==string2 commandIF [NOT] EXIST filename command
增强用法:IF [/I] string1 compare-op string2 command
[/I] 加上/I就不区分大小写了!EQU - 等于NEQ - 不等于LSS - 小于LEQ - 小于或等于GTR - 大于GEQ - 大于或等于
示例:配合else使用:
IF EXIST filename (
del filename
) ELSE (
echo filename missing
)
示例:if else if else嵌套
@echo off
rem 可读性好,兼容性好
setlocal EnableDelayedExpansion
set option=2
set sum=-1
if %option% == 3 (
echo three
set /a sum=%option%*%option%*%option%
) ^
else if %option% == 2 (
echo two
if not %sum% equ -1 set /a sum=2*%option%
) ^
else if %option% == 1 (
echo one
set /a sum=%option%
) ^
else (
echo zero
set /a sum=0
)
echo sum = !sum!
pause
示例:根据上一个命令执行结果确定下一步命令
@echo off
dir c:
:: 退出代码为>=1就跳至标题1处执行,>=0就跳至标题0处执行
IF ERRORLEVEL 1 goto 1
IF ERRORLEVEL 0 goto 0
:: 上面的两行不可交换位置,否则失败了也显示成功。
:0
echo 命令执行成功!
:: 程序执行完毕跳至标题exit处退出
goto exit
:1
echo 命令执行失败!
:: 程序执行完毕跳至标题exit处退出
goto exit
:exit
pause
示例:文件是否存在
echo off
IF EXIST autoexec.bat echo 文件存在!
IF not EXIST autoexec.bat echo 文件不存在!
1.8 for循环
基本格式:FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一个单一字母表示可替换的参数。(set) 指定一个或一组文件名,可以使用通配符。command 指定对每个文件执行的命令。command-parameters为特定命令指定参数或命令行开关。
1.8.1 FOR循环的4个参数 /d /l /r /f
1.8.1.1 参数 /d
使用格式:FOR /D %%variable IN (set) DO command [command-parameters] 作用:指定遍历范围为当前目录,且遍历对象仅为文件夹不包含文件类型
如果 set 中包含通配符(* 和 ?),将对与 set 相匹配的每个目录(而不是指定目录中的文件组)执行指定的 Command。这个参数主要用于目录搜索,不会搜索文件。
# 打印c盘根目录所有文件夹名称
@echo off
for /d %%i in (c:\*) do echo %%i
pause
# 打印c盘根目录名字只有1-3个字母的文件夹
for /d %%i in (c:\???) echo %%i
pause
1.8.1.2 参数 /l
使用格式:FOR /L %%variable IN (start,step,end) DO command [command-parameters] 作用:明确循环次数和步长
表示以增量形式从开始到结束的一个数字序列。比如:(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1)。
1.8.1.3 参数 /r
使用格式:FOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters] 作用:指定递归遍历范围为/r后面的路径,遍历对象含文件和文件夹
检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符或则具体的文件名(不含通配符),则忽略set枚举该目录树。
@echo off
:: 递归遍历指定路径
for /r e: %%i in (*.exe) do echo %%i
:: 递归遍历当前路径
for /r %%i in (*.exe) do echo %%i
pause
1.8.1.4 参数 /f
逐行遍历文本文件、文本、命令行中的字符串
使用格式: FOR /F [“options”] %%variable IN (file-set) DO command [command-parameters] FOR /F [“options”] %%variable IN (“string”) DO command [command-parameters] FOR /F [“options”] %%variable IN (‘command’) DO command [command-parameters] 作用:遍历读取文件、字符串、命令行中指定内容执行相应操作
其中, [“options”]为一个或多个解析选项,选项之间用空格断开,这些解析选项包括:
eol=c - 指一个行注释字符的结尾(就一个)(备注:默认以使用;号为行首字符的为注释行)skip=n - 指在文件开始时忽略的行数,(备注:最小为1,n可以大于文件的总行数,默认为1。)delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。m-n格式为一个范围。
非常抽象,直接看示例:
@echo off
rem 首先建立临时文件test.txt
echo ;注释行,这是临时文件,用完删除 >test.txt
echo 11段 12段 13段 14段 15段 16段 >>test.txt
echo 21段,22段,23段,24段,25段,26段 >>test.txt
echo 31段-32段-33段-34段-35段-36段 >>test.txt
FOR /F "eol=; tokens=1,3* delims=,- " %%i in (test.txt) do echo %%i %%j %%k
Pause
Del test.txt
运行显示结果:
11段 13段 14段 15段 16段 21段 23段 24段,25段,26段 31段 33段 34段-35段-36段 请按任意键继续. . .
解析: eol=; 分号开头的行为注释行 tokens=1,3* 将每行第1段,第3段和剩余字段分别赋予变量%%i,%%j,%%k delims=,- (减号后有一空格)以逗号减号和空格为分隔符,空格必须放在最后
再看一个command的示例:
@echo off
FOR /F "delims=" %%i in ('net user') do @echo %%i
pause
运行结果: 本机全部帐号名字就出来了
解析: 把扩号内的内容用两个单引号引起来就表示那个当命令执行,FOR会返回命令的每行结果,加那个"delims=" 是为了让我空格的行能整行显示出来,不加就只显示空格左边一列!
1.8.2 FOR循环中的变量
1.8.2.1 变量 ~I,删除首尾引号("),扩展 %I
示例:
@echo off
echo ^"1111>temp.txt
echo "2222">>temp.txt
echo 3333^">>temp.txt
echo "4444"44>>temp.txt
echo ^"55"55"55>>temp.txt
rem 上面建立临时文件,注意不成对的引号要加转义字符^,重定向符号前不要留空格
FOR /F "delims=" %%i IN (temp.txt) DO echo %%~i
pause
del temp.txt
执行结果: 1111 #字符串前的引号被删除了 2222 #字符串首尾的引号都被删除了 3333" #字符串前无引号,后面的引号保留 4444"44 #字符串前面的引号删除了,而中间的引号保留 55"55"55 #字符串前面的引号删除了,而中间的引号保留
总结规律: 无头不删,有头连尾删,中间不删
1.8.2.2 变量 %~fI,将 %I 扩展到一个完全合格的路径名
示例:
@echo off
# 打印当前目录下所有文件的绝对路径
for /f %%i in ('dir /b') do echo %%~fi
# 打印当前目录下所有文件的文件名
:: for /f %%i in ('dir /b') do echo %%i
执行结果: C:\Documents and Settings\Administrator\桌面\test.bat C:\Documents and Settings\Administrator\桌面\test.vbs
1.8.2.3 变量 %~dI,仅将 %I 扩展到一个驱动器号
示例:
FOR /F "delims==" %%i IN ('dir /b') DO @echo %%~di
pause
执行结果: C: C:
1.8.2.4 变量 %~pI,仅将 %I 扩展到一个路径
注意:所谓的路径就是文件所在目录,及parent的绝对路径,注意与%%~fI区别
1.8.2.5 变量 %~nI,仅将 %I 扩展到一个文件名
示例:
# 只打印文件名(不含拓展名)
for /f %%i in ('dir /b') do echo %%~ni
# 打印文件名(含拓展名)
for /f %%i in ('dir /b') do echo %%i
1.8.2.6 变量 %~xI,仅将 %I 扩展到一个文件扩展名
只打印文件拓展名
1.8.2.7 变量 %~sI,扩展的路径只含有短名
好像跟%%~fI效果一样
1.8.2.8 变量 %~aI,将 %I 扩展到文件的文件属性
打印出来的东西,应该是读写权限之类的: –a--------
1.8.2.9 变量 %~tI,将 %I 扩展到文件的日期/时间
打印文件日期
1.8.2.10 变量 %~zI,将 %I 扩展到文件的大小
打印文件大小
1.8.2.11 变量 %~$PATH:I,查找列在路径环境变量的目录,并将 %I 扩展到找到的第一个完全合格的名称
如果环境变量名未被定义,或者没有找到文件,此组合键会扩展到空字符串
# 在PATH变量里指定的路径里搜索notepad.exe文件,如果有notepad.exe则会把他所在绝对路径打印出来,没有就打印一个错误!
@echo off
FOR /F "delims=" %%i IN (“notepad.exe”) DO echo %%~$PATH:i
pause
执行结果: C:\WINDOWS\system32\notepad.exe
1.9 setlocal 与 变量延迟
现象:
@echo off
set a=4
set a=5 & echo %a%
pause
结果:4 解说:批处理读取命令时是按行读取的(另外例如for命令等,其后用一对圆括号闭合的所有语句也当作一行),在处理之前要完成必要的预处理工作,这其中就包括对该 行命令中的变量赋值。我们现在分析一下例1,批处理在运行到这句“set a=5 & echo %a%”之前,先把这一句整句读取并做了预处理——对变量a赋了值,那么%a%当然就是4了!(没有为什么,批处理就是这样做的。)
@echo off
setlocal enabledelayedexpansion
set a=4
set a=5 & echo !a!
pause
结果:5
@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,5) do (
set a=%%i
echo !a!
)
pause
结果:
1 2 3 4 5
例:交换两个变量的值,且不用中间变量
@echo off
::目的:交换两个变量的值,但是不使用临时变量
::Code by JM 2007-1-24 [email=CMD@XP]CMD@XP[/email]
::出处:http://www.cn-dos.net/forum/viewthread.php?tid=27078
set var1=abc
set var2=123
echo 交换前: var1=%var1% var2=%var2%
set var1=%var2%& set var2=%var1%
echo 交换后: var1=%var1% var2=%var2%
pause
1.10 常用符号
1.10.1 % 批处理变量引导符
引用变量用%var%,调用程序外部参数用%1至%9等等
%0 批处理文件本身,包括完整的路径和扩展名,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等%1 第一个参数%9 第九个参数%* 从第一个参数开始的所有参数
:: 最简单的复制文件自身的方法
copy %0 d:\wind.bat
1.10.2 > 重定向符
DOS的标准输入输出通常是在标准设备键盘和显示器上进行的,利用重定向,可以方便地将输入输出改向磁盘文件或其它设备。
大于号>将命令发送到文件或设备,例如打印机>prn。使用大于号“>”时,有些命令输出(例如错误消息)不能重定向。双大于号>>将命令输出添加到文件结尾而不删除文件中已有的信息。小于号<从文件而不是键盘上获取命令所需的输入。>&符号将输出从一个默认I/O流(stdout[1],stdin[0],stderr[2])重新定向到另一个默认I/O流。<&和>&相反,从一个句柄读取输入并将其写入到另一个句柄输出中1>nul 表示禁止输出正确的信息, 2>nul 表示禁止输出错误信息。
@echo off
set /p str=<%0
echo %str%
运行显示批处理文件自身的第一行:@echo off
1.10.3 | 命令管道符
格式:第一条命令 | 第二条命令 [| 第三条命令…] 将第一条命令的结果作为第二条命令的参数来使用,记得在unix中这种方式很常见。
:: 查找C:\所有,并发现TXT字符串
dir c:\|find "txt"
1.10.4 ^ 转义字符
^是对特殊符号<,>,&的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊意义。
@echo off
echo test ^>1.txt
# 结果则是:test > 1.txt
echo a^
b^
c
# 输出abc不换行
1.10.5 &、&&、|| 命令组合
&:前一个命令执行失败不影响后边的命令执行;&&:前一个命令执行失败,后边的命令将不执行;||:前一个命令失败才执行后一个命令;
命令的优先级: 管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令变量延迟: 这种多条命令被视为一条命令行时,如果其中有变量,就涉及到变量延迟的问题。
# 把C盘和D盘的文件和文件夹列出到a.txt文件中
(dir c: & dir d:)>a.txt
# 或者简写
dir c:;d:>>a.txt
1.10.6 ,和;的区别
,:逗号相当于空格,在某些情况下“,”可以用来当做空格使;:当命令参数相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序仍会执行。
# 逗号当空格用
dir,c:\
# 打印多个文件目录
dir c:;d:;e:\1.txt
1.10.7 % !变量延迟引用
在变量延迟问题中,用来表示变量,即%var%应该表示为!var!,具体请看前面的setlocal命令介绍。
1.10.8 数学运算符
加+,减-,乘*,除/,取模%%,这些运算符只有一种使用场景,就是在set /a命令的等号右边使用,即:set /a var=%num%*5。 需要注意的是涉及到组合命令或者for循环时,注意变量的更新问题,需要结合setlocal和变量延迟。
1.11 时间处理
1.11.1 date和time
date:显示和设置当前日期time:显示和设置当前时间
:: 从文件中读入命令输入,而不是从键盘中读入
@echo off
echo date>temp.txt
date del temp.txt 1.11.2 时间延迟 1.11.2.1 利用ping命令 实测效果:每个任务ping3次,任务耗时均稳定在2秒多一点点 @echo off :usePing echo befor:%date%-%time% REM /n 3表示ping 3次 REM >nul就是屏蔽掉ping命令所打印的内容 ping /n 3 127.0.0.1 >nul echo after:%date%-%time% echo click to resume next & pause>nul goto usePing 1.11.2.2 利用for循环 实测效果:循环5000次耗时1s不到,不推荐 @echo off echo 延时前:%time% for /l %%i in (1,1,5000) do echo %%i>nul echo 延时后:%time% pause 1.11.2.3 利用vbs延迟函数 实测效果:精确度毫秒,误差1000毫秒内 @echo off echo 延时前:%time% call :delay 5000 echo 延时后:%time% goto :eof :delay echo WScript.Sleep %1>delay.vbs CScript //b delay.vbs del delay.vbs goto :eof 1.11.2.4 利用goto循环 使用效果:精确度10毫秒,误差50毫秒内 @echo off echo 程序开始时间:%Time% call :delay 10 echo 实际延迟时间:%totaltime%毫秒 echo 程序结束时间:%time% pause exit ::-----------以下为延时子程序-------------------- :delay @echo off if "%1"=="" goto :eof set DelayTime=%1 set TotalTime=0 set NowTime=%time% ::读取起始时间,时间格式为:13:01:05.95 :delay_continue set /a minute1=1%NowTime:~3,2%-100 set /a second1=1%NowTime:~-5,2%%NowTime:~-2%0-100000 set NowTime=%time% set /a minute2=1%NowTime:~3,2%-100 set /a second2=1%NowTime:~-5,2%%NowTime:~-2%0-100000 set /a TotalTime+=(%minute2%-%minute1%+60)%%60*60000+%second2%-%second1% if %TotalTime% lss %DelayTime% goto delay_continue goto :eof 1.11.2.5 利用timeout函数 格式:TIMEOUT [/T] timeout [/NOBREAK] :: 延时5s,并禁用失败信息 timeout /t 5 /nobreak 2>nul 1.11.3 一个定时任务模版 设计思路:使用goto实现循环逻辑,使用一种时间延迟方案实现轮询时间间隔 @echo off set MAX_LOOP_COUNT=5 set SLEEP=1000 set loop_count=0 :loop echo loop%loop_count% start at: %time% call :task call :delay %SLEEP% %loop_count% echo loop%loop_count% end at: %time% set /a loop_count+=1 if /i %loop_count% gtr %MAX_LOOP_COUNT% ( goto :eof ) else ( goto loop ) :delay if not exist temp.vbs echo wscript.sleep %1>temp.vbs cscript //B temp.vbs if "%2"=="%MAX_LOOP_COUNT%" del temp.vbs goto :eof :task rem 这里是实际耗时任务 echo 模拟耗时任务 goto :eof 1.11.4 系统定制任务 使用GUI设置界面,这里不做详细介绍,参考:windows中怎么添加定时任务 1.12 字符串处理 1.12.1 中文乱码 cmd的默认字符编码为ANSI且不可更改,而一般文本编辑器默认的字符编码是UTF-8,因此中文乱码很常见,解决办法是切换bat脚本的字符编码格式为ANSI或GB2312即可 1.12.2 字符串截取 使用格式:%str:~start,count% 示例: @echo off set str=hello world echo 原字符串为:%str% echo 截取前5个字符:%str:~0,5% echo 截取最后5个字符:%str:~-5% echo 截取第一个到倒数第6个字符:%str:~-1,-5% echo 从第4个字符开始截取5个字符:%str:~3,5% echo 从倒数第6个字符开始截取5个字符:%str:~-6,5% 1.12.3 字符串局部替换 使用格式:%str:old=new% 示例: @echo off set str=hello world echo 替换前:%str% echo 替换后:%str:world=bat% echo str=%str% echo %str% set str=%str:world=bat% echo str=%str% 1.12.3 字符串拼接 使用格式:%str1%%str2% 示例: @echo off set str1=hello set str2=world set str1=%str1%%str2% echo str1=%str1% str2=%str2% pause 1.13 网络管理 1.13.1 ping网络嗅探 使用格式:ping [options] host 示例:基本用法 rem 嗅探一个域名,/n 3表示指定嗅探次数为3次 ping /n 3 www.baidu.com rem 嗅探一个IP(不支持端口,加端口可以使用telnet) ping 10.10.80.110 示例:嗅探一个未被占用的局域网IP @echo off set /p seg1=请输入网段的前三位数字以 . 结尾,比如10.10.80.: set /a seg2=1 :start set ip=%seg1%%seg2% echo try ip = %ip% ping ip -w 1 -n 1|find /i "Lost = 1"&&set c=1||set c=0 if not %c%==0 set seg2+=1 & if seg2==255 goto fail else goto start echo 可用的IP为:%ip% & pause>nul goto :eof :fail echo 无可用IP pause 1.13.2 netstat网络查看 命令行查看端口占用并关闭进程 # 查找8080端口使用情况,此命令会列出相关进程信息,然后结合taskkill即可 netstat -aon|findstr "8080" 1.13.3 tracert路由跟踪 Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name Options: -d 不处理主机名. -h maximum_hops Maximum number of hops to search for target. -j host-list Loose source route along host-list (IPv4-only). -w timeout 每个ICMP包的等待超时时间. -R Trace round-trip path (IPv6-only). -S srcaddr Source address to use (IPv6-only). -4 强制IPv4. -6 强制IPv6. -target_name 目标IP或者域名 示例: # 跟踪百度路由信息 trace -d www.baidu.com # 根据指定IP trace -d 192.168.1.100 1.14 其他命令 1.14.1 cls清空屏幕 1.14.2 random随机数 %RANDOM% 系统变量 返回 0 到 32767 (215-1)之间的任意十进制数字。由 Cmd.exe 生成。 示例:获取4-12范围的随机数 @REM 产生10个[4,12]间的随机数 @echo off REM 启用延迟环境变量扩展 setlocal enabledelayedexpansion REM 设置随机数的最小和最大值以及求模用的变量 set min=4 set max=12 set /a mod=!max!-!min!+1 for /l %%i in (1,1,10) do ( REM 产生[min,max]之间的随机数 set /a r=!random!%%!mod!+!min! echo. echo 随机数%%i:!r!) 示例:生成给定位数的随机密码 @echo off call :randomPassword 6 pass1 pass2 pass3 echo %pass1% %pass2% %pass3% pause exit :randomPassword ::---------生成随机密码 ::---------%1为密码长度,%2及以后为返回变量名称 ::---------goto循环、变量嵌套、命令嵌套 @echo off if "%1"=="" goto :eof if %1 lss 1 goto :eof set password_len=%1 set return= set wordset=abcdefghijklmnopqrstuvwxyz023456789_ ::---------------------------循环 :randomPassword1 set /a numof=%random%%%36 ::---生成0-35之间的随即数 call set return=%return%%%wordset:~%numof%,1%% ::---在wordset变量中,从的随即生成的0-35的下一个取出一个字符 set /a password_len-=1 if %password_len% gtr 0 goto randomPassword1 ::---------------------------循环 if not "%2"=="" set %2=%return% shift /2 if not "%2"=="" goto randomPassword goto :eof 1.14.3 type显示文本文件内容 格式:TYPE [drive:][path]filename type 1.txt 1.14.4 where搜索文件所在的目录 格式:WHERE [/R dir] [/Q] [/F] [/T] pattern…,其中pattern为正则表达式 示例一:查看程序所在目录 :: 显示git所在的路径 where git 执行结果:C:\Program Files\Git\cmd\git.exe 示例二:文件查找 ::查找c:\windows路径下所有dll文件(不含子目录) where c:\windows:*.dll ::查找环境变量windir目录下所有含.号的文件 where $windir:*.* ::查找c:\windows及其子目录下所有dll和exe文件 where /r c:\windows *.dll *.exe 1.14.5 tasklist&taskkill进程管理 tasklist|findstr pname # 指定进程名称 taskkill /f /im pname # 指定进程ID(可指定多个) taskkill /f /pid 2152 /pid 1284 2. 文件操作 2.1 文件(夹)创建 文件创建:echo :: 使用echo创建文件 echo>test.txt 文件夹创建:md :: 使用md创建temp和目录 md temp md d:\myfolder rem 使用mkdir创建任意路径的目录 2.2 文件(夹)删除 文件删除:del [/q /a /f /s] filename #删除指定文件,不能是隐藏、系统、只读文件 del d:\test.txt rem 删除 d:\temp 文件夹里面的所有文件,包括隐藏、只读、系统文件,不包括子目录 del /q /a /f d:\temp\*.* 文件夹删除:rd [/s /q] dirname /s:删除文件夹下所有内容/q:不需要确认,直接删 @echo off del /q/a/f d:"temp"*.* 2.3 文件(夹)重命名 2.4 文件拷贝和移动 文件拷贝: 格式:copy src dst :: 文件复制:复制当前脚本内容到指定文件 copy %0 d:\wind.bat 格式:xcopy src dst /s /e /i /y xcopy d:\mp3 e:\mp3 /s/e/i/y 文件移动:注意move不能跨盘符分区 move d:\test.txt c:\test.txt 2.5 文件(夹)查找 2.5.1 dir打印指定目录下的文件列表 :: 打印当前目录的文件列表 dir :: 打印C盘文件列表,如果当前在c盘子目录中,则会打印本级目录的文件列表 dir c: :: 查找c盘根目录下,文件名含“txt”的文件 dir c:|find "txt" 2.5.2 tree以树状结构打印指定目录下的文件列表 TREE [drive:][path] [/F] [/A] /F 显示每个文件夹中文件的名称。 /A 使用 ASCII 字符,而不使用扩展字符。 示例: tree c:\>c盘所有文件.txt 2.5 文件内容查找 2.5.1 find 在文件中搜索字符串。格式:FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] “string” [[drive:][path]filename[ …]] /V 显示所有未包含指定字符串的行。/C 仅显示包含字符串的行数。/N 显示行号。/I 搜索字符串时忽略大小写。/OFF[LINE] 不要跳过具有脱机属性集的文件。“string” 指定要搜索的文字串,[drive:][path]filename,指定要搜索的文件。如果没有指定路径,FIND 将搜索键入的或者由另一命令产生的文字。 Find常和type命令结合使用: 挑选包含string的行:Type [drive:][path]filename | find “string” [>tmpfile]剔除文件中包含string的行:Type [drive:][path]filename | find /v “string”显示文件行数:Type [drive:][path]filename | find /c @echo off :: 示例1:直接使用find命令 echo 111 >test.txt echo 222 >>test.txt find "111" test.txt del test.txt pause :: 示例2:结合type命令,显示效果更友好 echo 111 >test.txt echo 222 >>test.txt type test.txt|find "111" del test.txt pause 2.6 文件目录切换 cd: cd path 进入当前路径的子目录 cd /d “[drive:][path]” 进入任何指定目录 cd … 进入上级目录 pushd:保存当前目录,并进入指定目录 popd:回到前一个保存的目录 示例: @echo off c: & cd\ & md mp3 #切换到c盘并在 C:\ 建立 mp3 文件夹 md d:\mp4 #在 D:\ 建立 mp4 文件夹 cd /d d:\mp4 #更改当前目录为 d:\mp4 pushd c:\mp3 #保存当前目录,并切换当前目录为 c:\mp3 popd #恢复当前目录为刚才保存的 d:\mp4 3. 界面相关 3.1 title修改命令行窗口标题 格式:title 文本。 示例: :: 命令行标题将显示为“自定义标题” title 自定义标题 3.2 color修改命令行背景色、前景色 格式:color af。第一个数字表示背景色,第二个数字表示前景色。 示例: :: 蓝底白字 color 9f 数字颜色0黑色1蓝色2绿色3湖蓝色4红色5紫色6黄色7白色8灰色9淡蓝色A淡绿色B淡浅绿色C淡红色D淡紫色E淡黄色F亮白色 3.3 修改命令行宽高 3.4 设计一个用户菜单界面 @echo off cls title 终极多功能修复 :menu cls color 0A echo. echo ============================== echo 请选择要进行的操作,然后按回车 echo ============================== echo. echo 1.网络修复及上网相关设置,修复IE,自定义屏蔽网站 echo. echo 2.病毒专杀工具,端口关闭工具,关闭自动播放 echo. echo 3.清除所有多余的自启动项目,修复系统错误 echo. echo 4.清理系统垃圾,提高启动速度 echo. echo Q.退出 echo. echo. :cho set choice= set /p choice= 请选择: IF NOT "%choice%"=="" SET choice=%choice:~0,1% if /i "%choice%"=="1" goto show if /i "%choice%"=="2" goto show if /i "%choice%"=="3" goto show if /i "%choice%"=="4" goto show if /i "%choice%"=="Q" goto endd echo 选择无效,请重新输入 echo. goto cho :show echo u choose %choice% goto cho :endd 3.5 实现进度条 @echo off mode con cols=113 lines=15 &color 9f cls echo. echo 程序正在初始化. . . echo. echo ┌──────────────────────────────────────┐ set/p= ■ for /L %%i in (1 1 38) do set /p a=■ echo 100%% echo └──────────────────────────────────────┘ pause 4. 变量 4.1 系统变量 这些变量系统已经给他们定义了值(包括环境变量),不需要我们来给他赋值,我们只需要调用而以。 %ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。%APPDATA% 本地 返回默认情况下应用程序存储数据的位置。%CD% 本地 返回当前目录字符串。%CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。%COMPUTERNAME% 系统 返回计算机的名称。%COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。%DATE% 系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关date 命令的详细信息,请参阅 Date。%ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用非零值表示错误。%HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。%HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。%HOMESHARE% 系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。%LOGONSERVER% 本地 返回验证当前登录会话的域控制器的名称。%NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器的数目。%OS% 系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。%PATH% 系统 指定可执行文件的搜索路径。%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。值:x86 或 IA64 基于Itanium%PROCESSOR_IDENTFIER% 系统 返回处理器说明。%PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器的型号。%PROCESSOR_REVISION% 系统 返回处理器的版本号。%PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。%RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。%SYSTEMDRIVE% 系统 返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。%SYSTEMROOT% 系统 返回 Windows server operating system 根目录的位置。%TEMP% 和 %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。%TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关time 命令的详细信息,请参阅 Time。%USERDOMAIN% 本地 返回包含用户帐户的域的名称。%USERNAME% 本地 返回当前登录的用户的名称。%USERPROFILE% 本地 返回当前用户的配置文件的位置。%WINDIR% 系统 返回操作系统目录的位置。 示例:复制文件到当前帐号的启动目录 # 注意有空格的目录要用引号引起来 copy d:\1.bat "%USERPROFILE%\「开始」菜单\程序\启动\" 示例:检查是否配置了ANDROID_HOME环境变量 方式一:判断对应值是否为空字符串 @echo off if "%ADNROID_HOM%"=="" echo android home not exist pause 方式二:直接使用define指令 @echo off if defined ANDROID_HOME echo android home has defined pause 示例:获取当前目录路径 echo %cd% 4.2 环境变量 查看所有环境变量 :: 命令行中打印所有环境变量 set :: 输出环境变量到文件 set > temp.txt 查看某个环境变量 :: 查看JAVA_HOME变量值 set JAVA_HOME 设置环境变量 :: 设置一个名为NEW_VAR的环境变量 set NEW_VAR=G:\TEMP 清除某个环境变量 :: 清除NEW_VAR这个变量 set NEW_VAR= 4.3 批处理入参变量 %0 批处理文件本身,包括完整的路径和扩展名,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等%1 第一个参数%9 第九个参数%* 从第一个参数开始的所有参数 这些%1和%9可以让批处理也能带参数运行,大大提高批处理功能! # 再命令行依次输入下述命令 echo ^@echo off>temp.bat echo echo var1 = %1 var2 = %2 var3 = %3>>temp.bat temp.bat 我是a 我是b 我是c del temp.bat 4.4 自定义变量 不需要预定义,直接set创建变量并赋值 基本格式: set var=string 定义一个字符串变量,string内容可以不输入 set /a var=number calculation 执行数学计算 set /p var=hint: 提示用户输入,var也是一个字符串 注意:在使用set为变量赋值时,=的左右不要有空格 示例:最简单的使用方式 @echo off set var=我是值 echo %var% pause 示例:数值由用户键盘输入 @echo off # var=,=号前后不要有空格 set /p var=please input any thing and end with enter: echo your input is %var% pause 4.5 设置网络代理 设置后只对当前 cmd 窗口上下文有效。 # 代理无用户名密码 set http_proxy=http://127.0.0.1:1080 set https_proxy=http://127.0.0.1:1080 # 具有用户名密码 set HTTP_PROXY=http://proxy.com:port set HTTP_PROXY_USER=username set HTTP_PROXY_PASS=password set HTTPS_PROXY=http://proxy.com:port set HTTPS_PROXY_USER=username set HTTPS_PROXY_PASS=password # 取消网络代理 netsh winhttp reset proxy 此处参考:windows终端命令行下使用网络代理 5. 调用三方应用程序 5.1 调用ftp ftp是常用的下载工具,ftp界面中有40多个常用命令,自己学习了,不介绍了。这里介绍如何用dos命令行调用ftp命令,实现ftp自动登录,并上传下载,并自动退出ftp程序。可以将ftp命令组合保存为一个文本文件,然后用以下命令调用即可。 ftp -n -s:[[drive:]path]filename,filename为ftp命令文件 命令脚本文件示例:登录IP地址,用户名、密码、操作命令 open 90.52.8.3 #打开ip user iware #用户为iware password8848 #密码 bin #二进制传输模式 prompt cd tmp1 #切换至iware用户下的tmp1目录 pwd lcd d:\download #本地目录 mget * #下载tmp1目录下的所有文件 bye #退出ftp 5.2 调用7-zip 语法格式:7z [ …] 详细情况见7-zip帮助文件 5.3 调用VBScript程序 使用 Windows 脚本宿主,可以在命令提示符下运行脚本。CScript.exe 提供了用于设置脚本属性的命令行开关。 使用格式:CScript 脚本名称 [脚本选项…] [脚本参数…] 脚本名称: 带有扩展名和必需的路径信息的脚本文件名称,如d:/admin/vbscripts/chart.vbs。脚本选项: //B 批模式:不显示脚本错误及提示信息//D 启用 Active Debugging//E:engine 使用执行脚本的引擎//H:CScript 将默认的脚本宿主改为 CScript.exe//H:WScript 将默认的脚本宿主改为 WScript.exe (默认)//I 交互模式(默认,与 B 相对)//Job:xxxx 执行一个 WSF 工作//Logo 显示徽标(默认)//Nologo 不显示徽标:执行时不显示标志//S 为该用户保存当前命令行选项//T:nn 超时设定秒:允许脚本运行的最长时间//X 在调试器中执行脚本//U 用 Unicode 表示来自控制台的重定向 I/O 5.4 调用jar包 命令格式:java -jar xxx.jar [command] 5.5 调用exe程序 命令格式:xxx.exe [command] 6. 转换为可执行文件 由于批处理文件是一种文本文件,任何人都可以对其进行随便编辑,不小心就会把里面的命令破坏掉,所以如果将其转换成可执行文件,不仅执行效率会大大提高,而且不会破坏原来的功能,更能将优先级提到最高。 在DOS环境下,可执行文件的优先级由高到低依次为.com>.exe>.bat>.cmd,即如果在同一目录下存在文件名相同 的这四类文件,当只键入文件名时,DOS执行的是name.com,如果需要执行其他三个文件,则必须指定文件的全名,如name.bat。 6.1 转换成.com文件 工具推荐:Bat2Com 6.2 转换成.exe文件 工具推荐:Bat To Exe Converter、bat2exe等 7. 参考资料 BAT 批处理脚本教程(详细篇脚本之家补充)_DOS/BAT_脚本之家BAT脚本编写教程(比较易懂和全面)_DOS/BAT_脚本之家 优惠劵 csfchh 关注 关注 67 点赞 踩 312 收藏 觉得还不错? 一键收藏 知道了 2 评论 bat脚本:快速入门 主要介绍windows bat脚本的基础语法以及一些常用功能的实现,通过这些基础操作的组合可以编写出强大的脚本工具。1. 常用命令介绍2. 文件操作2.1 文件(夹)创建2.2 文件(夹)删除2.3 文件(夹)重命名3. 键盘输入3.1 获取键盘输入内容4. 界面相关4.1 修改命令行背景色... 复制链接 扫一扫 专栏目录 献给Redis入门的同学 08-08 redis官方window包+自写启动脚本+redis desktop manager 工具,献给Redis入门的同学。启动方便,自己用的。启动Redis 运行 runServer.bat ,即可启动,redis desktop manager 查看,也可以运行 runClient.bat 进行命令行交互 BAT编程简明教程.rar_BAT编程简明教程_bat脚本 09-21 Windows下详细 BAT脚本教程,适用于脚本入门者。 2 条评论 您还未登录,请先 登录 后发表或查看评论 bat脚本语法与实战 最新发布 Android系统优化 05-24 6392 bat脚本就是将一系列DOS命令按照一定顺序排列而形成的集合,运行在windows命令行环境上。通过本文的学习,基本可以实现一些简单的脚本。 BAT 批处理脚本教程(详细篇脚本之家补充) 09-19 主要介绍了BAT 批处理脚本教程详细篇,并且脚本之家给了补充,想学习bat的朋友可以参考下 超详细的bat脚本常用命令及亲测示例 WZH577的博客 09-04 3万+ 注意:编辑bat文件请使用ANSI编码(不然会出现中文乱码) 1、语句注释 rem命令行注释,可以回显(语句会在命令行中显示); ::两个冒号,效果同上,但不会回显。(冒号后加任意非字母数字字符都可起到注释作用) 2、暂停 pause暂停,命令行中出现"请按任意键继续..." 自定义暂停时的文本,如下: ::pause>nul,隐藏原暂停文本 echo 这里是自定义文本! &... 小程序商城v2.4.0.3更新包【独立版】.zip 03-30 小程序源码 -web -views -version.json -vendor -modules -models -helpers.php -hejiang -extensions -controllers -config -composer.lock -composer.json -commands -behaviors 导入的数据库.sql 前端 -wxParse -utils.js -utils -siteinfo.js -pages -mch -images -commons -area-picker -app.wxss -app.json -app.js -api.tpl.js -api.js bat批处理脚本大全 feinifi的博客 11-27 2万+ 常见批处理脚本知识点整合。echo for set goto eof call 超详细 批处理文件脚本(bat) 教程(持续更新) qq_15855921的博客 09-22 2万+ bat批处理脚本是一门比较冷门的脚本语言,适用于windows。在实际的项目开发中,在windows系统中的开发语言不少是需要搭建很复杂的环境或编写好的程序需要编译成相应可执行文件才能使用,因此偶尔会希望有个语言不需要编译且容易获得——bat批处理脚本就是这样一门windows脚本语言。 bat入门 weixin_67782151的博客 06-02 6342 cmd/bat入门 BAT脚本编写教程(比较易懂和全面) 热门推荐 木牛的博客 09-08 5万+ 作者不详。敬意! echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。 echo 表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身 @与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。 call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 p... BAT批处理脚本教程 04-04 很好的有关BAT批处理脚本的教程,适合初学者入门。 dos脚本编程例子 11-27 里面是几个dos脚本的小例子,非常简单,入门用 批处理标准教程(bat入门到精通) 04-14 批处理标准教程(bat入门到精通)。 批处理(Batch),也称为批处理脚本,具有.bat 或者.cmd 的扩展名。顾名思义,批处理就是对某对象进行批量的处理,属于脚本语言的一种。 bat命令入门与高级技巧详解.doc 10-05 批处理文件,在DOS和Windows(任意)系统中,.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的扩展名为bat 或cmd。目前比较常见的批处理包含两类:DOS批处理和PS批处理。PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。更复杂的情况,需要使用if、for、goto等命令控制程式的运行过程,如同C、Basic等高级语言一样。如果需要实现更复杂的应用,利用外部程式是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。批处理程序虽然是在命令行环境中运行,但不仅仅能使用命令行软件,任何当前系统下可运行的程序都可以放在批处理文件中运行。 Windows中编写脚本BAT批处理命令入门.pdf 03-19 Windows中编写脚本BAT批处理命令入门.pdf bat 脚本的基本语法和例子 05-29 bat 脚本的 基本 语法,和 一些 简单的 应用、。 PowerShell脚本:快速入门 csfchh的博客 04-07 5569 batch脚本在面对xml读写、字符串处理等需求时常常捉襟见肘,无法满足我们的需求,因此掌握powershell显得非常必要。 0. 基本指令 0.1 获取帮助 这里有三个命令可以帮助你了解命令作用及其用法。 get-command:列出所有可用命令 get-help command [-full]:获取指定命令帮助信息,加full获取详细帮助 command -?:获取指定命令的简要介绍,相当于get-help command 注意: powershell与batch一样不区分大小写 变量采用小驼 bat脚本案例:实现炫酷的文字logo csfchh的博客 03-26 1677 需求 我们在日常运行第三方的脚本的时候经常看到非常炫酷的启动logo,比如下图: 不仅美观,而且可以展示品牌和团队标志,提高曝光度。下面详细介绍一下如何用纯batch脚本实现上述效果,如果有更好的实现方案也可以在评论区中支出。 知识点 如何获取logo图片字符串; 如何将含有转义字符的字符串打印到控制台; batch实现字符串base64编解码; 具体实现 首先解决第一个问题:logo字符串的获取。像上述字符串其实是文字logo衍生而来的,查阅相关资料,得知一个网站http://patorjk.com bat脚本文件中如何执行bat脚本 05-10 要在 Windows 操作系统中执行 BAT 脚本文件,可以按照以下步骤操作: 1. 打开命令提示符:按下 `Win` + `R` 组合键,输入 `cmd` 并按下 `Enter` 键。 2. 切换到存储 BAT 脚本文件的目录:使用 `cd` 命令切换到存储 BAT 脚本文件的目录。例如,如果 BAT 文件存储在 `D:\Scripts` 目录中,可以使用以下命令切换到该目录: ``` cd /d D:\Scripts ``` 3. 执行 BAT 脚本:在命令提示符中输入 BAT 文件名并按下 `Enter` 键即可执行 BAT 脚本。例如,如果 BAT 文件名为 `myscript.bat`,可以使用以下命令执行 BAT 脚本: ``` myscript.bat ``` 注意:确保在 BAT 脚本文件中没有错误,并且在执行前已经保存。如果 BAT 脚本包含其他命令或程序,还需要确保这些命令或程序已经安装并配置正确。 “相关推荐”对你有帮助么? 非常没帮助 没帮助 一般 有帮助 非常有帮助 提交 csfchh CSDN认证博客专家 CSDN认证企业博客 码龄8年 暂无认证 71 原创 3万+ 周排名 2万+ 总排名 19万+ 访问 等级 892 积分 63 粉丝 145 获赞 18 评论 771 收藏 私信 关注 热门文章 Git patch的使用方法和场景 37918 bat脚本:快速入门 30903 Idea插件开发教程 20384 SVN patch的使用方法及场景 9968 PowerShell脚本:快速入门 5567 分类专栏 android 26篇 flutter 12篇 Gradle 4篇 Scripts 15篇 Java/Kotlin/Groovy/Scala 2篇 JavaScript/TypeScript VCS 6篇 CI/CD 3篇 IDE 6篇 dart python C/C++ 2篇 BackEnd 2篇 ForeEnd Coding/Testing 1篇 NDK 6篇 CloudNative 1篇 Algorithm 1篇 Tools 5篇 最新评论 【NDK系列】给移动开发者的JNI快速入门 CSDN-Ada助手: Python 中支持哪些开发框架? bat脚本:快速入门 usnrengui: txt文本每行增加前缀的方法,注意|前加^转义符 @echo off (for /F "tokens=*" %%a in (orginal.txt) do echo prefix ^|p2%%a)>updaded.txt bat脚本:快速入门 *Asterisk*: 试了下1.3.1.4不行诶,得call echo %%word:~%num:~2,1%,1%% Android原生图表库调研 h309849232: 有云词,矩形树图的。。。找了好久没找到 SVN patch的使用方法及场景 csfchh: 就是你的本地文件,对应git的工作区,都是一个意思 自荐文章 day16_购物车(添加购物车,购物车列表查询,删除购物车商品,更新选中商品状态,完成购物车商品的全选,清空购物车) cout之<< ++运算符重载调用顺序 141 视频去水印神器 万能解析(拿来去小红书水印超棒) 【学习笔记】计算机视觉深度学习网络模型 211 在线租房(JSP+java+springmvc+mysql+MyBatis) 328 最新文章 【NDK系列】使用ndk-build构建可在Android设备运行的ELF可执行文件 【NDK系列】Android tombstone文件分析 PlantUML基础使用教程 2024年2篇 2023年4篇 2022年17篇 2021年42篇 2020年6篇 目录 目录 分类专栏 android 26篇 flutter 12篇 Gradle 4篇 Scripts 15篇 Java/Kotlin/Groovy/Scala 2篇 JavaScript/TypeScript VCS 6篇 CI/CD 3篇 IDE 6篇 dart python C/C++ 2篇 BackEnd 2篇 ForeEnd Coding/Testing 1篇 NDK 6篇 CloudNative 1篇 Algorithm 1篇 Tools 5篇 目录 评论 2 被折叠的 条评论 为什么被折叠? 到【灌水乐园】发言 查看更多评论 添加红包 祝福语 请填写红包祝福语或标题 红包数量 个 红包个数最小为10个 红包总金额 元 红包金额最低5元 余额支付 当前余额3.43元 前往充值 > 需支付:10.00元 取消 确定 下一步 知道了 成就一亿技术人! 领取后你会自动成为博主和红包主的粉丝 规则 hope_wisdom 发出的红包 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 余额充值 windows批处理(bat),和它的用途 - 知乎切换模式写文章登录/注册windows批处理(bat),和它的用途冰河Windows批处理(.bat)是一种脚本编程语言,用于在Windows操作系统下自动化执行一系列命令。虽然它可能不如其他编程语言强大和灵活,但仍然有一些现实用途,包括以下几个方面:自动化任务:批处理文件可以用于执行一系列重复性的任务或命令,例如批量重命名文件、备份文件、复制或移动文件等。通过编写一个批处理脚本,可以将这些任务自动化,提高效率并减少手动操作。系统管理:批处理文件在系统管理方面非常有用。管理员可以使用它们来安装软件、配置网络设置、创建和管理用户帐户、修改注册表项等。通过批处理脚本,可以快速批量执行这些系统管理任务。数据处理:批处理脚本可以用于处理文本文件和数据。你可以使用批处理脚本来提取、筛选、转换和格式化文本数据。这对于日志文件分析、数据导入和导出以及批量处理数据非常有用。自定义工具:批处理文件可以用来创建自定义工具或实用程序。通过编写一些批处理脚本,你可以构建简单的界面,接受用户输入并执行相应的操作。这些工具可以用于简化特定任务,增加用户友好性,而无需使用更复杂的编程语言。尽管批处理语言功能相对较弱,但对于一些简单的自动化任务和系统管理操作,它们仍然是有用的工具。如果你只需要完成一些基本的、非常特定的任务,批处理文件是一个简单而有效的选择。下面是一个简单的示例,展示了如何编写和运行一个Windows批处理文件(.bat):打开文本编辑器(例如Notepad)并创建一个新文件。输入以下命令,并将其保存为.bat文件,例如myscript.bat。@echo off echo Hello, World! pause双击运行该批处理文件(或通过命令提示符运行它)。该批处理文件的作用是输出"Hello, World!"并在执行完毕后等待用户按下任意键才会关闭窗口。你可以根据需要编写自己的批处理脚本。以下是一些常用的批处理命令和语法:@echo off:该命令关闭批处理文件中命令的显示,使输出结果更简洁。echo Windows 批处理(bat)语法大全 - 赵青青 - 博客园 会员 周边 新闻 博问 AI培训 云市场 所有博客 当前博客 我的博客 我的园子 账号设置 简洁模式 ... 退出登录 注册 登录 Qing's Blog 管理 Windows 批处理(bat)语法大全 本文是学习bat整理的笔记,由于内容较多,建议结合右侧文章大纲查看。 %~dp0[获取当前路径] %~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录 cd %~dp0 :进入批处理所在目录 cd %~dp0bin\ :进入批处理所在目录的bin目录 示例 这个示例在win10 x64测试正常 ::作用:以管理员身份安装Apache d: cd %~dp0bin\ httpd.exe -k install -n "Apache24" 运行结果 以管理员身份运行 示例.bat ,执行结果如下: C:\Windows\system32>d: D:\>cd D:\Server\Apache24\bin\ D:\Server\Apache24\bin>httpd.exe -k install -n "Apache24" 我的常用命令 %cd%[执行的路径] 当前执行的路径,并非目标文件的路径 taskkill /f /im notepad.exe [终止进程] taskkill /?打开帮助 cmd窗口中文乱码 在CMD窗口右键/默认值,打开属性选择 “默认代码页为简体中文GBK”, 获取命令帮助 xxx /? 遇到记不清楚的命令,但记得名字,就可以键入 命令名 空格 /?就会有详细的该命令的帮助了,比如:ping /? cd /? 查看内置命令的帮助信息 ver /? cmd /? set /? rem /? if /? echo /? goto /? for /? shift /? call /? 其他常用的命令 type /? find /? findstr /? copy /? 一、基础语法 1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。 2.批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。 3.批处理的编程能力远不如C语言等编程语言,也十分不规范。 4.每个编写好的批处理文件都相当于一个DOS的外部命令,把它所在的目录放到DOS搜索路径(path)中,即可在任意位置运行。 5.C:\AUTOEXEC.BAT 是每次系统启动时都会自动运行的,可以将每次启动时都要运行的命令放入该文件中。 6.大小写不敏感(命令符忽略大小写) 7.批处理的文件扩展名为 .bat 或 .cmd。 8.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。 二、参数 1) 系统参数 %SystemRoot% === C:\WINDOWS (%windir% 同样) %ProgramFiles% === C:\Program Files %USERPROFILE% === C:\Documents and Settings\Administrator (子目录有“桌面”,“开始菜单”,“收藏夹”等) %APPDATA% === C:\Documents and Settings\Administrator\Application Data %TEMP% === C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp (%TEM% 同样) %APPDATA% === C:\Documents and Settings\Administrator\Application Data %OS% === Windows_NT (系统) %Path% === %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem (原本的设置) %HOMEDRIVE% === C: (系统盘) %HOMEPATH% === \Documents and Settings\Administrator :: 枚举当前的环境变量 setlocal enabledelayedexpansion FOR /F "usebackq delims==" %%i IN (`set`) DO @echo %%i !%%i! 2) 传递参数给批处理文件 %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。 变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用 %1 到 %9 顺序表示。 Sample: call test2.bat "hello" "haha" (执行同目录下的“test2.bat”文件,并输入两个参数) 在“test2.bat”文件里写: echo %1 (打印: "hello") echo %2 (打印: "haha") echo %0 (打印: test2.bat) echo %19 (打印: "hello"9) 三、批处理基本命令 0. help 命令 /? 命令 语法: 命令 /? 可显示此命令的帮助信息 Sample: type /? >>tmp.txt (把 type 命令的帮助信息写入到tmp.txt文件里) Sample: help type (显示跟“type /?”一样) 1.Echo 命令 语法: echo [{on|off}] [message] ECHO [ON | OFF] 打开回显或关闭回显功能。 ECHO 显示当前回显设置。 ECHO [message] 显示信息。 echo off 表示在此语句后所有运行的命令都不显示命令行本身;默认是on,on时会显示如: C:\文件夹路径>命令行。 在实际应用中我们会把这条命令和重定向符号( 也称为管道符号,一般用 > >> ^ )结合来实现输入一些命令到特定格式的文件中。 Sample: echo off Sample: echo hello world (显示出“hello world”) Sample: echo Windows Registry Editor Version 5.00 > c:\setupreg.reg (此前还没有 setupreg.reg 这个文件) Sample: echo "SourcePath"="D:\\Win2003\\" >> c:\setupreg.reg (追加内容进 setupreg.reg 这个文件) 2.@ 命令 表示不显示@后面的命令,(在入侵过程中自然不能让对方看到你使用的命令啦) @ 与 echo off 相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。 Sample: @echo off (此语句常用于开头,表示不显示所有的命令行信息,包括此句) Sample: @echo please wait a minite... Sample: @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。) 3.Goto 命令 语法:goto label (label是参数,指定所要转向的批处理程序中的行。) 指定跳转到标签行,找到标签行后,程序将处理从下一行开始的命令。 label标签的名字可以随便起,但是最好是有意义的,字母前必须加个冒号“:”来表示这个字母是标签。 goto命令就是根据这个冒号来寻找下一步跳到到那里。经常与 if 配合使用,根据不同的条件来执行不同的命令组。 例题见“5.Pause 命令” 4.Rem 命令 语法:Rem Message... (小技巧:用::代替rem) 注释命令,在C语言中相当与/*...*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和自己日后修改。 Sample:@Rem Here is the description. 5.Pause 命令 会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续 Sample: @echo off :begin copy a:*.* d:\back echo Please put a new disk into driver A pause goto begin 在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。 显示的信息提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键再次复制。 6.Call 命令 语法: call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] 参数: [Drive:][Path] FileName 指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。 调用另一个批处理程序,并且不终止父批处理程序。 如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令。 call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。 Sample:call="%cd%\test2.bat" haha kkk aaa (调用指定目录下的 test2.bat,且输入3个参数给他) Sample:call test2.bat arg1 arg2 (调用同目录下的 test2.bat,且输入2个参数给他) 注:可以调用自身(死循环、递归) 7.start 命令 调用外部程序,所有的 DOS命令 和 命令行程序 都可以由 start命令 来调用。 入侵常用参数: MIN 开始时窗口最小化 SEPARATE 在分开的空间内开始 16 位 Windows 程序 HIGH 在 HIGH 优先级类别开始应用程序 REALTIME 在 REALTIME 优先级类别开始应用程序 WAIT 启动应用程序并等候它结束 parameters 这些为传送到命令/程序的参数 Sample:start /MIN test2.bat arg1 arg2 (调用同目录下的 test2.bat,且输入2个参数给他,且本窗口最小化) Sample:e:\"program files"\极品列车时刻表\jpskb.exe (文件路径名有空格时) 8.If 命令 if 表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式: 1) IF 语法: if [not] "参数" == "字符串" 待执行的命令 参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号) Sample: if "%1" == "a" format a: Sample: if {%1} == {} goto noparms 2) if exist 语法: if [not] exist [路径\]文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 Sample: if exist config.sys edit config.sys (表示如果存在这文件,则编辑它,用很难看的系统编辑器) Sample: if exist config.sys type config.sys (表示如果存在这文件,则显示它的内容) 3) if errorlevel number 语法: if [not] errorlevel <数字> 待执行的命令 如果程序返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。(返回值必须按照从大到小的顺序排列) Sample: @echo off XCOPY F:\test.bat D:\ IF ERRORLEVEL 1 (ECHO 文件拷贝失败 ) Else IF ERRORLEVEL 0 ECHO 成功拷贝文件 pause 很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),称为错误码errorlevel或称返回码。 常见的返回码为0、1。通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令。 4) else 语法: if 条件 (成立时执行的命令) else (不成立时执行的命令) 如果是多个条件,建议适当使用括号把各条件包起来,以免出错。 Sample: if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) else (echo comment3 ) 注:如果 else 的语句需要换行,if 执行的行尾需用“^”连接,并且 if 执行的动作需用(括起来),否则报错 Sample: if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) ^ else (echo comment3 ) 5) 比较运算符: EQU - 等于 (一般使用“==”) NEQ - 不等于 (没有 “!=”,改用“ if not 1==1 ”的写法) LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于 9.choice 命令 choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的 errorlevel, 然后配合 if errorlevel 选择运行不同的命令。 注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。 choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。 使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234…… Sample: choice /c:dme defrag,mem,end 将显示: defrag,mem,end[D,M,E]? Sample: choice /c:dme defrag,mem,end if errorlevel 3 goto defrag (应先判断数值最高的错误码) if errorlevel 2 goto mem if errotlevel 1 goto end 10.for 命令 for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。 1) for {%variable | %%variable} in (set) do command [command-parameters] %variable 指定一个单一字母可替换的参数。变量名称是区分大小写的,所以 %i 不同于 %I 在批处理文件中使用 FOR 命令时,指定变量建议用 %%variable而不要用 %variable。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。 2) 如果命令扩展名被启用,下列额外的 FOR 命令格式会受到支持: a.FOR /D %variable IN (set) DO command [command-parameters] 如果集里面包含通配符,则指定与目录名匹配,而不与文件名匹配。 b.FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] 检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。 如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。 c.FOR /L %variable IN (start,step,end) DO command [command-parameters] 该集表示以增量形式从开始到结束的一个数字序列。 如:(1,1,5) 将产生序列 1 2 3 4 5; 而(5,-1,1) 将产生序列 (5 4 3 2 1)。 d.有或者没有 usebackq 选项: FOR /F ["options"] %variable IN (file-set) DO command FOR /F ["options"] %variable IN ("string") DO command FOR /F ["options"] %variable IN (command) DO command 参数"options"为: eol=c - 指一个行注释字符的结尾(就一个,如“;”) skip=n - 指在文件开始时忽略的行数。 delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。 tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。 m-n格式为一个范围。通过 nth 符号指定 mth。 如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。 usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。 3) Sample: 1. 如下命令行会显示当前目录下所有以bat或者txt为扩展名的文件名。 for %%c in (*.bat *.txt) do (echo %%c) a. 如下命令行会显示当前目录下所有包含有 e 或者 i 的目录名。 for /D %%a in (*e* *i*) do echo %%a b. 如下命令行会显示 E盘test目录 下所有以bat或者txt为扩展名的文件名。 for /R E:\test %%b in (*.txt *.bat) do echo %%b for /r %%c in (*) do (echo %%c) :: 遍历当前目录下所有文件 c. 如下命令行将产生序列 1 2 3 4 5 for /L %%c in (1,1,5) do echo %%c d. 以下两句,显示当前的年月日和时间 For /f "tokens=1-3 delims=-/. " %%j In ('Date /T') do echo %%j年%%k月%%l日 For /f "tokens=1,2 delims=: " %%j In ('TIME /T') do echo %%j时%%k分 e. 把记事本中的内容每一行前面去掉8个字符 setlocal enabledelayedexpansion for /f %%i in (zhidian.txt) do ( set atmp=%%i set atmp=!atmp:~8! if {!atmp!}=={} ( echo.) else echo !atmp! ) :: 读取记事本里的内容(使用 delims 是为了把一行显示全,否则会以空格为分隔符) for /f "delims=" %%a in (zhidian.txt) do echo.%%a 4) continue 和 break 利用 goto 实现程序中常用的 continue 和 break 命令, 其实非常简单 continue: 在 for 循环的最后一行写上一个标签,跳转到这位置即可 break: 在 for 循环的外面的下一句写上一个标签,跳转到这位置即可 Sample: (伪代码) for /F ["options"] %variable IN (command) DO ( ... do command ... if ... goto continue if ... goto break ... do command ... :continue ) :break 四、其它命令 1. ping 命令 测试网络联接状况以及信息包发送和接收状况。但是不能够测试端口。 语法:ping IP地址或主机名 [-t] [-a] [-n count] [-l size] 参数含义: -t 不停地向目标主机发送数据; -a 以IP地址格式来显示目标主机的网络地址; -n count 指定要Ping多少次,具体次数由count来指定; -l size 指定发送到目标主机的数据包的大小。 Sample: ping 192.168.0.1 -t (不停的测试192.168.0.1,按ctrl+c停止) Sample: for /L %%a in (0,1,255) do ping 192.168.0.%%a -n 1 >> tmp.txt (ping一下所有的局域网电脑) 2. telnet 命令 测试端口使用 telnet IP地址或主机名 端口,使用tcp协议的 Sample: telnet 192.168.0.1 80 (测试192.168.0.1的80端口) 3.color 命令 设置背景及字体颜色 语法: color bf b 是指定背景色的十六进制数字; f 指定前景颜色(即字体颜色)。 颜色值: 0:黑色 1:蓝色 2:绿色 3:湖蓝 4:红色 5:紫色 6:** 7:白色 8:灰色 9:淡蓝 A:淡绿 B:浅绿 C:淡红 D:淡紫 E:淡黄 F:亮白 如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时的颜色。 如果两参数一样,视为无效输入。只有一个参数时,设置字体。 4. random 命令 产生随机数(正整数0~) 5. exit 命令 结束程序。即时是被调用的程序,结束后也不会返回原程序 6. shutdown命令 shutdown -s 关机 五、字符串处理 1) 分割字符串,以查看时间为例 %源字符串:~起始值,截取长度% (起始值从0开始;截取长度是可选的,如果省略逗号和截取长度,将会从起始值截取到结尾; 截取长度如果是负数,表示截取到倒数第几个。) "%time%" 显示如:"11:04:23.03" (完整的时间"hh:mm:ss.tt") "%time:~0,5%" 显示"hh:mm"(即"11:04"),其中0表示从右向左移位操作的个数,5表示从左向右移位操作的个数 "%time:~0,8%" 显示标准时间格式"hh:mm:ss"(即"11:04:23",前8个字符串) "%time:~3,-3%"显示"mm:ss"(即从第4个开始,截去最后3个的字符串) "%time:~3%" 显示"04:23.03"(即去掉前4个字符串) "%time:~-3%" 显示".tt"(即最后3个字符串) 上面的字串分割格式,也可以用于其它地方,如目录路径:"%cd:~0,10%" 2) 替换字符串 set a="abcd1234" echo %a% 显示:"abcd1234" set a=%a:1=kk% 替换“1”为“kk” echo %a% 显示:"abcdkk234" 3) 字符串合并 由于没有直接的字符串合并函数,只能用笨方法了。 set str1=%str1%%str2% (合并 str1 和 str2) 4) 计算字符串长度 没有现成的函数。如下程序利用 goto形成循环,不断将字符串截短1,并记录截短的次数,到字符串变成空时的次数即长度。 set testStr=This is a test string :: 将 testStr 复制到str,str 是个临时字符串 set str=%testStr% :: 标签,用于goto跳转 :next1 :: 判断str是不是空,如果不是则执行下边的语句 if not "%str%"=="" ( :: 算术运算,使num的值自增1,相当于num++或者++num语句 set /a num+=1 :: 截取字符串,每次截短1 set "str=%str:~1%" :: 跳转到next1标签: 这里利用goto和标签,构成循环结构 goto next1 ) :: 当以上循环结构执行完毕时,会执行下边的语句 echo testStr=%testStr% echo testStr的长度为:%num% 5) 截取字符串时,需要传递参数 直接 echo %args:~%num%,-5% 没办法想要的字符串,需要如下两步 setlocal enabledelayedexpansion echo !args:~%num%,-5! 六、注册表操作 1) 备份注册表,将[HKEY_LOCAL_MACHINE ... Run]的内容,备份到“c:\windows\1.reg” reg export HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run c:\windows\1.reg reg export HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run c:\windows\2.reg 2) 修改/添加注册表内容 a.一般的添加或修改 reg add "HKCU\Environment" /v Java_Home /t reg_sz /d "D:\Java\jdk1.6.0_07" /f 上句解析:“HKCU”是“HKEY_CURRENT_USER”的缩写,不用缩写用全称也可以; 添加名称为“Java_Home”的变量;类型为“reg_sz”,另一种常见类型是“reg_dword”;值为 D:\Java\jdk1.6.0_07; b.使用变量 set SoftWareHome=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java reg add "%SoftWareHome%Web Start\1.6.0_07" /v Home /t reg_sz /d "%cd%\jre1.6.0_07\bin" /f c.如果注册表的名称有空格,或者数据用特殊符号时 reg add "%SoftWareHome2%\HelpCommands" /v "01:Online Documentation" /t reg_sz /d "\"%cd%\Documentation\Index.htm\"" /f 传入值为(值用双引号括起来的):"D:\ProgramFiles\1.work_soft\Sybase\PowerDesigner_12\Documentation\Index.htm" reg add "%SoftWareHome2%\Paths" /v ReportTemplates /t reg_sz /d "%cd%\Resource Files\Report Templates\\" /f 传入值为(“\”结尾的): E:\Holemar\1.notes\90. Windows\Resource Files\Report Templates\ d.增加空的内容 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg\IMJPMIG8.1" e.添加或修改默认值 reg add "%vpath%InstallPath" /ve /t reg_sz /d "%cd%" /f 这里用“/ve”来代替一般修改时的“/v 变量名”,即可修改默认值了 3) 删除注册表的内容 双引号里面的是注册表的目录,下面两句将删除这目录下的所有信息 reg delete "HKEY_CURRENT_USER\Software\RealVNC" /f reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC" /f 双引号里面的是注册表的目录,下面一句将删除这目录下指定的某个信息 reg delete "HKEY_LOCAL_MACHINE\Software\RealVNC" /v VNC_Server /f 4) 注册表的常用位置 a.系统启动项: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] example: REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run /v VNC_Server /t REG_SZ /d "%cd%\VNC_Server.bat" /f b.系统环境变量: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment] c.当前用户的环境变量: [HKEY_CURRENT_USER\Environment] 5) 修改注册表之后,结束并重新加载explorer.exe进程,可刷新注册表,令其生效 taskkill /f /im explorer.exe >nul start "" "explorer.exe" 七、系统服务 1) 停止服务:NET STOP 服务名 启动服务:NET Start 服务名 2) 设置启动类型 自动: SC CONFIG 服务名 START= auto 手动: SC CONFIG 服务名 START= demand 已禁用:SC CONFIG 服务名 START= disabled 附:“START= ”等号后面必须要有一个空格。(start还有boot,system两个值) Sample: SC CONFIG Spooler START= demand (打印机加载项,设置成手动,默认自动) 3) 查看系统服务:start %SystemRoot%\system32\services.msc /s 八、setlocal与变量延迟 0) 在没有开启变量延迟的情况下,某条命令行中的变量改变,必须到下一条命令才能体现。 另外例如for命令等,其后用一对圆括号闭合的所有语句也当作一行。 example: set a=4 set a=5 & echo %a% 结果:4 也可以对这种机制加以利用,如下的变量交换 example: set var1=abc set var2=123 echo 交换前: var1=%var1% var2=%var2% set var1=%var2%& set var2=%var1% echo 交换后: var1=%var1% var2=%var2% 1) 启动批处理文件中环境变量的本地化。本地化将持续到出现匹配的 endlocal 命令或者到达批处理文件结尾为止。 语法: setlocal {enableextension | disableextensions} {enabledelayedexpansion | disabledelayedexpansion} enableextension: 启用命令扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。 disableextensions: 禁用命令扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。 enabledelayedexpansion: 启用延迟的环境变量扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。 disabledelayedexpansion: 禁用延迟的环境变量扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。 2) 为了能够感知环境变量的动态变化,批处理设计了变量延迟。简单来说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前再进行赋值,也就是说“延迟”了对变量的赋值。 examle: setlocal enabledelayedexpansion set a=4 set a=5 & echo !a! 结果: 5 变量延迟的启动语句是“setlocal enabledelayedexpansion”,并且变量要用一对叹号“!!”括起来 由于启动了变量延迟,所以批处理能够感知到动态变化,即不是先给该行变量赋值,而是在运行过程中给变量赋值,因此此时a的值就是5了 另外,启动变量延迟,“%”的变量还是不变 example2: setlocal enabledelayedexpansion for /l %%i in (1,1,5) do ( set a=%%i echo !a! ) 结果,打印从1到5;如果不变量延迟,一个变量也没有打印 九、文件处理 1.删除 1) 删除一个文件或多个文件 del /s /q /f d:\test\a.bat 将直接删除d:\test\a.bat,没有任务提示 del temp\* /q /f /s 将直接删除 本目录的 temp 目录的所有文件,没有任务提示 删除文件的时候可以使用“*”作通配符 2) 删除一个空目录 rd /q /s d:\test\log 将直接删除d:\test\log目录,如果log目录里面有文件将无法删除 3) 删除一个非空目录 (必须指定目录名称) rmdir /q /s d:\test\logs 必须指定目录名称,不能使用通配符 /S 除目录本身外,还将删除指定目录下的所有子目录 /Q 安静模式,带 /S 删除目录树时不要求确认 无论里面是否有文件或文件夹将全部直接删除 2.创建目录 MKDIR [drive:]path MD [drive:]path 路径有空格时,可以用双引号括起来,也可以用 替代 实践部分: ====================================================================== 小摘录: 1. 调用其他程序时,对文件的大小写不敏感,文件后缀也可忽略 如:start LeapFTP.exe 与 start leapftp 效果一样,都是运行“LeapFTP.exe”文件 每行的开头的字符串会自动查找程序来运行,还可用双引号引起来(文件名或目录名含空格时必须用) 如:"D:\Program Files\Leap FTP.exe" "LeapFTP.exe" 可正常运行文件,start "" "LeapFTP.exe" 也可以正常运行文件(注意,第一个参数是窗口显示的标题) 3. copy C:\test\*.* D:\back (复制C盘test文件夹的所有文件(不包括文件夹及子文件夹里的东西)到D盘的back文件夹) 4. dir c:\*.* > a.txt (将c盘文件列表写入 a.txt 中) 5. > 生成文件并写入内容(如果有这文件则覆盖), >> 文件里追加内容 6. md d:\aa (创建文件夹) 7. 在命令末尾加上“>NUL 2>NUL”,表示隐蔽返回信息。 8. 等待用户输入: set /p 变量名=屏幕显示信息。 Sample:set /p pass=请输入密码: 9. 让用户按回车退出 小技巧(替代pause),文件的最后一句:set /p tmp=操作结束,请按回车键退出... 10.设置标题: title JDK安装 11.设置屏幕显示颜色,如绿色: color 0a 12.清屏: cls 13.查看自己的IP: for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i echo %ip% (这时的 %ip% 就是自己的IP地址) 14. 修改文件的更新日期 copy 文件名+,,>nul (修改为当前时间,如果要修改为指定时间,先修改系统时间,再改回系统时间) 15. 修改文件的后缀名 ren C:\test\*.jpg *.JPG for /r %%c in (*.jpg) do (ren %%c *.JPG) :: 修改当前目录下的所有文件的后缀名,包括子目录的 16. 修改文件的文件名 rename test.jpg test2.JPG rename *.jpg *.888.JPG 17. 查看DNS、IP、Mac等 1) Win98: winipcfg 2) Win2000以上: Ipconfig /all 3) NSLOOKUP 18.查看IP上的共享资源,就可以 net view 192.168.10.8 19.共享 A.查看你机器的共享资源: net share B.手工删除共享 net share 共享资源名称$ /d 注意$后有空格。 C.增加一个共享: net share mymovie=e:\downloads\movie /users:3 mymovie 共享成功。 同时限制链接用户数为3人。 20.打开某网站 start iexplore.exe http://www.baidu.com 实例 1. 生成 reg 文件,运行它,再删除它 echo "更改windows安装文件的路径" echo Windows Registry Editor Version 5.00 > c:\setupreg.reg echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup] >> c:\setupreg.reg echo "ServicePackSourcePath"="D:\\Win2003\\" >> c:\setupreg.reg echo "SourcePath"="D:\\Win2003\\" >> c:\setupreg.reg :: 写入注册表 regedit /S c:\setupreg.reg :: 删除注册表文件 del c:\setupreg.reg 2.调用了exe文件,结束后没有关闭,解决方法 用start命令运行文件,如: start LeapFTP.exe 192.168.0.100 3.设置系统环境变量 :: 有这个环境变量,则不需再设置,直接结束 if not "%JAVA_HOME%" == "" exit :: 设置环境变量的地址 set inputJavaHome=%cd%\jdk1.6.0_07 :: 设置环境变量,也可以设置当前用户的变量 set EnvironmentHome=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment echo 正在设置环境变量,请稍候...... reg add "%EnvironmentHome%" /v JAVA_HOME /t reg_sz /d "%inputJavaHome%" /f reg add "%EnvironmentHome%" /v ClassPath /t reg_sz /d ".;%%JAVA_HOME%%\lib" /f reg add "%EnvironmentHome%" /v Path /t reg_sz /d "%%JAVA_HOME%%\bin;%Path%" /f] :: 刷新,令环境变量生效 taskkill /f /im explorer.exe >nul start "" "explorer.exe" 4.隐藏某目录的所有文件及文件夹 cd /d 要隐藏的目录(如:D:) for /f "usebackq delims=" %%A in (`dir /a /b`) do (attrib "%%A" -r +h -s) 5.在批处理中使用密码。密码为admin,输入正确,跳转到next1 ,若输入密码错误3次,则锁屏。。 @echo off set num=0 :11 set /p pass=请输入密码: if "%pass%"=="admin" goto next1 set /a num=%num% + 1 if %num%==3 goto no1 goto 11 :no1 %windir%\system32\rundll32.exe user32.dll,LockWorkStation goto 11 :next1 echo 密码正确,执行下面的程式 pause 6.清空回收站(未成功) @echo off del /f /s /q c:\recycler\*.* ::刷新屏幕 taskkill /f /im explorer.exe >nul start "" "explorer.exe" 7.让系统断断续续地鸣叫 @echo off :begin :: 发出鸣叫(“”实际就是ASCII码值为7的特殊字符(蜂鸣键beep) echo :: 让程序暂停一小阵子 ping -n 1 -l 1 127.1>nul goto :begin 8.将 FAT 卷转换成 NTFS 利用“CONVERT.exe”进行,解析如下: CONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X] volume 指定驱动器号(后面跟一个冒号)、装载点或卷名。 /FS:NTFS 指定要被转换成 NTFS 的卷。 /V 指定 Convert 应该用详述模式运行。 /CvtArea:filename 将根目录中的一个接续文件指定为NTFS 系统文件的占位符。 /NoSecurity 指定每个人都可以访问转换的文件和目录的安全设置。 /X 如果必要,先强行卸载卷。该卷的所有打开的句柄则无效。 程序如下: @ ECHO OFF @ ECHO. @ ECHO. 说 明 @ ECHO -------------------------------------------------------------------------- @ ECHO NTFS是一种磁盘格式。该格式能存放大于4G的单个文件(如高清电影文件),并可对 @ ECHO 文件夹进行加密,但有个缺点是DOS下无法访问。建议D盘及其后的盘使用NTFS格式, @ ECHO C盘如非必要可以不转换,FAT32与NTFS这两种格式的读写速度几乎是没有差别的。 @ ECHO -------------------------------------------------------------------------- @ ECHO. convert c: /fs:ntfs :: D盘也转成 NTFS convert d: /fs:ntfs 9. 获取我的文档 SET SF="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" FOR /F "tokens=2,*" %%I IN ('REG QUERY %SF% /v Personal 2^>NUL^|FIND /I "Personal"') DO SET "myDoc=%%~J" :: 复制文件到我的文档 XCOPY /D /E /R /Y /C "%cd%\test.txt" "%myDoc%\test\" 10 获取当前目录路径 cd ./ set CURR_PATH=%cd% ========================================== 实例: 3.IF-ERRORLEVEL @ECHO OFF XCOPY C:\AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO 文件拷贝失败 IF ERRORLEVEL 0 ECHO 成功拷贝文件 如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。 IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。因此下面的批处理文件是错误的: @ECHO OFF XCOPY C:\AUTOEXEC.BAT D:\ CHO 成功拷贝文件 IF ERRORLEVEL 1 ECHO 未找到拷贝文件 IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作 IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作 IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误 无论拷贝是否成功,后面的: 未找到拷贝文件 用户通过ctrl-c中止拷贝操作 预置错误阻止文件拷贝操作 拷贝过程中写盘错误 都将显示出来。 以下就是几个常用命令的返回值及其代表的意义: backup 0 备份成功 1 未找到备份文件 2 文件共享冲突阻止备份完成 3 用户用ctrl-c中止备份 4 由于致命的错误使备份操作中止 diskcomp 0 盘比较相同 1 盘比较不同 2 用户通过ctrl-c中止比较操作 3 由于致命的错误使比较操作中止 4 预置错误中止比较 diskcopy 0 盘拷贝操作成功 1 非致命盘读/写错 2 用户通过ctrl-c结束拷贝操作 3 因致命的处理错误使盘拷贝中止 4 预置错误阻止拷贝操作 format 0 格式化成功 3 用户通过ctrl-c中止格式化处理 4 因致命的处理错误使格式化中止 5 在提示“proceed with format(y/n)?”下用户键入n结束 xcopy 0 成功拷贝文件 1 未找到拷贝文件 2 用户通过ctrl-c中止拷贝操作 4 预置错误阻止文件拷贝操作 5 拷贝过程中写盘错误 ============================================================= @echo off //不显示shell的命令。 Setlocal //环境改变只适用于这个文件。 %OS% //为当前的操作系统。 Rem //注释一行文本。 Goto 标签 //改变执行顺序,去标签位置. :标签 //定义一个标签。 Set 变量名=值 //定义变量 Not //取反 Netstat –na //显示当前被点用的端口. %0 %1 %2 //用于表示批处理文件的参数0为命令,共1-9个参数。 Shift //用于向前一个参数,原1变0,原2变1.每调用一次shift向前一移动一位。 Call //调用其他批处理文件或命令。 Start 命令 参数 //指示出在另一个窗口中开始运行命令。 ============================================================= :: 这段批处理程序可以自动设置Java环境变量 @echo off IF EXIST %1\bin\java.exe ( rem 如输入正确的 Java2SDK 安装目录,开始设置环境变量 @setx JAVA_HOME %1 @setx path %path%;%JAVA_HOME%\bin @setx classpath %classpath%;. @setx classpath %classpath%;%JAVA_HOME%\lib\tools.jar @setx classpath %classpath%;%JAVA_HOME%\lib\dt.jar @setx classpath %classpath%;%JAVA_HOME%\jre\lib\rt.jar @echo on @echo Java 2 SDK 环境参数设置完毕,正常退出。 ) ELSE ( IF "%1"=="" ( rem 如没有提供安装目录,提示之后退出 @echo on @echo 没有提供 Java2SDK 的安装目录,不做任何设置,现在退出环境变量设置。 ) ELSE ( rem 如果提供非空的安装目录但没有bin\java.exe,则指定的目录为错误的目录 @echo on @echo 非法的 Java2SDK 的安装目录,不做任何设置,现在退出环境变量设置。 ) ) 可能遇到问题 中文乱码 把bat文件的编码改为ANSI,UTF-8在win10我这儿会中文显示乱码。 说明 本文部分内容转载自:http://m18333611647.blog.163.com/blog/static/225533041201422111365439/ posted @ 2015-07-04 11:25 赵青青 阅读(128875) 评论(2) 编辑 收藏 举报 会员力量,点亮园子希望 刷新页面返回顶部 公告 Copyright © 2024 赵青青 Powered by .NET 8.0 on Kubernetes BAT脚本编写教程(比较易懂和全面)_bat脚本编写教程菜鸟-CSDN博客 BAT脚本编写教程(比较易懂和全面) 最新推荐文章于 2023-11-20 13:44:32 发布 致守 最新推荐文章于 2023-11-20 13:44:32 发布 阅读量5w 收藏 323 点赞数 60 分类专栏: bat&cmd 文章标签: linux windows 原文链接:https://blog.csdn.net/happydecai/article/details/78794948?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-14.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu% 版权 bat&cmd 专栏收录该内容 42 篇文章 18 订阅 订阅专栏 作者不详。敬意! echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。 echo 表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身 @与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。 call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 pause 运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续 rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。 例1:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。 批处理文件的内容为: 命令注释: @echo off 不显示后续命令行及当前命令行 dir c:\*.* >a.txt 将c盘文件列表写入a.txt call c:\ucdos\ucdos.bat 调用ucdos echo 你好 显示"你好" pause 暂停,等待按键继续 rem 准备运行wps 注释:准备运行wps cd ucdos 进入ucdos目录 wps 运行wps 批处理文件的参数 批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符“%”。 %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。 例2:C:根目录下有一批处理文件名为f.bat,内容为: @echo off format %1 如果执行C:\>f a: 那么在执行f.bat时,%1就表示a:,这样format %1就相当于format a:,于是上面的命令运行时实际执行的是format a: 例3:C:根目录下一批处理文件名为t.bat,内容为: @echo off type %1 type %2 那么运行C:\>t a.txt b.txt %1 : 表示a.txt %2 : 表示b.txt 于是上面的命令将顺序地显示a.txt和b.txt文件的内容。 特殊命令 if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。 一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 1、if [not] "参数" == "字符串" 待执行的命令 参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。 例:if "%1"=="a" format a: 2、if [not] exist [路径\]文件名 待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 如: if exist c:\config.sys type c:\config.sys 表示如果存在c:\config.sys文件,则显示它的内容。 3、if errorlevel <数字> 待执行的命令 很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。 如if errorlevel 2 goto x2 二、goto 批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。 如: goto end :end echo this is the end 标号用“:字符串”来定义,标号所在行不被执行。 三、choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。 注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice /?查看用法。 choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异): CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text] 描述: 该工具允许用户从选择列表选择一个项目并返回所选项目的索引。 参数列表: /C choices 指定要创建的选项列表。默认列表是 "YN"。 /N 在提示符中隐藏选项列表。提示前面的消息得到显示, 选项依旧处于启用状态。 /CS 允许选择分大小写的选项。在默认情况下,这个工具 是不分大小写的。 /T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项 会得到选择。 /D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选 项指定的一组选择中; 同时,必须用 /T 指定 nnnn。 /M text 指定提示之前要显示的消息。如果没有指定,工具只 显示提示。 /? 显示帮助消息。 注意: ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选 择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择, 该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的 ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0 的 ERRORLEVEL 值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降 序排列。 示例: CHOICE /? CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。" CHOICE /T 10 /C ync /CS /D y CHOICE /C ab /M "选项 1 请选择 a,选项 2 请选择 b。" CHOICE /C ab /N /M "选项 1 请选择 a,选项 2 请选择 b。" 如果我运行命令:CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。" 屏幕上会显示: 确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]? 例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列): @echo off choice /C dme /M "defrag,mem,end" if errorlevel 3 goto end if errorlevel 2 goto mem if errotlevel 1 goto defrag :defrag c:\dos\defrag goto end :mem mem goto end :end echo good bye 此批处理运行后,将显示“defrag,mem,end[D,M,E]?” ,用户可选择d m e ,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。 四、for 循环命令,只要条件符合,它将多次执行同一命令。 语法: 对一组文件中的每一个文件执行某个特定命令。 FOR %%variable IN (set) DO command [command-parameters] %%variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。 例如一个批处理文件中有一行: for %%c in (*.bat *.txt) do type %%c 则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。 批处理示例 1. IF-EXIST 1) 首先用记事本在C:\建立一个test1.bat批处理文件,文件内容如下: @echo off IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist 然后运行它: C:\>TEST1.BAT 如果C:\存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。 2) 接着再建立一个test2.bat文件,内容如下: @ECHO OFF IF EXIST \%1 TYPE \%1 IF NOT EXIST \%1 ECHO \%1 does not exist 执行: C:\>TEST2 AUTOEXEC.BAT 该命令运行结果同上。 说明: (1) IF EXIST 是用来测试文件是否存在的,格式为 IF EXIST [路径+文件名] 命令 (2) test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身) ,这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。 3) 更进一步的,建立一个名为TEST3.BAT的文件,内容如下: @echo off IF "%1" == "A" ECHO XIAO IF "%2" == "B" ECHO TIAN IF "%3" == "C" ECHO XIN 如果运行: C:\>TEST3 A B C 屏幕上会显示: XIAO TIAN XIN 如果运行: C:\>TEST3 A B 屏幕上会显示 XIAO TIAN 在这个命令执行过程中,DOS会将一个空字符串指定给参数%3。 2、IF-ERRORLEVEL 建立TEST4.BAT,内容如下: @ECHO OFF XCOPY C:\AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO 文件拷贝失败 IF ERRORLEVEL 0 ECHO 成功拷贝文件 然后执行文件: C:\>TEST4 如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。 IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。 因此下面的批处理文件是错误的: @ECHO OFF XCOPY C:\AUTOEXEC.BAT D:\ IF ERRORLEVEL 0 ECHO 成功拷贝文件 IF ERRORLEVEL 1 ECHO 未找到拷贝文件 IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作 IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作 IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误 无论拷贝是否成功,后面的: 未找到拷贝文件 用户通过ctrl-c中止拷贝操作 预置错误阻止文件拷贝操作 拷贝过程中写盘错误 都将显示出来。 以下就是几个常用命令的返回值及其代表的意义: backup 0 备份成功 1 未找到备份文件 2 文件共享冲突阻止备份完成 3 用户用ctrl-c中止备份 4 由于致命的错误使备份操作中止 diskcomp 0 盘比较相同 1 盘比较不同 2 用户通过ctrl-c中止比较操作 3 由于致命的错误使比较操作中止 4 预置错误中止比较 diskcopy 0 盘拷贝操作成功 1 非致命盘读/写错 2 用户通过ctrl-c结束拷贝操作 3 因致命的处理错误使盘拷贝中止 4 预置错误阻止拷贝操作 format 0 格式化成功 3 用户通过ctrl-c中止格式化处理 4 因致命的处理错误使格式化中止 5 在提示“proceed with format(y/n)?”下用户键入n结束 xcopy 0 成功拷贝文件 1 未找到拷贝文件 2 用户通过ctrl-c中止拷贝操作 4 预置错误阻止文件拷贝操作 5 拷贝过程中写盘错误 3、IF STRING1 == STRING2 建立TEST5.BAT,文件内容如下: @echo off IF "%1" == "A" formAT A: 执行: C:\>TEST5 A 屏幕上就出现是否将A:盘格式化的内容。 注意:为了防止参数为空的情况,一般会将字符串用双引号(或者其它符号,注意不能使用保留符号)括起来。 如:if [%1]==[A] 或者 if %1*==A* 5、GOTO 建立TEST6.BAT,文件内容如下: @ECHO OFF IF EXIST C:\AUTOEXEC.BAT GOTO _COPY GOTO _DONE :_COPY COPY C:\AUTOEXEC.BAT D:\ :_DONE 注意: (1) 标号前是ASCII字符的冒号":",冒号与标号之间不能有空格。 (2) 标号的命名规则与文件名的命名规则相同。 (3) DOS支持最长八位字符的标号,当无法区别两个标号时,将跳转至最近的一个标号。 6、FOR 建立C:\TEST7.BAT,文件内容如下: @ECHO OFF FOR %C IN (*.BAT *.TXT *.SYS) DO TYPE %C 运行: C:>TEST7 执行以后,屏幕上会将C:盘根目录下所有以BAT、TXT、SYS为扩展名的文件内容显示出来(不包括隐藏文件)。 bat命令的使用 一. 简单批处理内部命令简介 1. Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法 echo [{on off}] [message] Sample:@echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> )结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。 2. @ 命令 表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。 Sample:@echo off @echo Now initializing the program,please wait a minite... @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。) 3. Goto 命令 指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。 语法: goto label (label是参数,指定所要转向的批处理程序中的行。) Sample: if {%1}=={} goto noparms if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。) @Rem check parameters if null show usage :noparms echo Usage: monitor.bat ServerIP PortNumber goto end 标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。 4. Rem 命令 注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。 Rem Message Sample:@Rem Here is the description.? 5. Pause 命令 运行 Pause 命令时,将显示下面的消息: Press any key to continue . . . Sample: @echo off :begin copy a:*.* d:\back echo Please put a new disk into driver A pause goto begin 在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。 6. Call 命令 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。 语法 call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] 参数 [Drive:}[Path] FileName 指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。 7. start 命令 调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。 入侵常用参数: MIN 开始时窗口最小化 SEPARATE 在分开的空间内开始 16 位 Windows 程序 HIGH 在 HIGH 优先级类别开始应用程序 REALTIME 在 REALTIME 优先级类别开始应用程序 WAIT 启动应用程序并等候它结束 parameters 这些为传送到命令/程序的参数 执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。 8. choice 命令 #这一个命令还不会用,上网再找找资料# choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234…… 如: choice /c:dme defrag,mem,end 将显示 defrag,mem,end[D,M,E]? Sample: Sample.bat的内容如下: @echo off choice /c:dme defrag,mem,end (31条消息) BAT脚本编写教程(比较易懂和全面)_happydecai的博客-CSDN博客_bat教程 优惠劵 致守 关注 关注 60 点赞 踩 323 收藏 觉得还不错? 一键收藏 知道了 2 评论 BAT脚本编写教程(比较易懂和全面) 作者不详。敬意!echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。echo 表示显示此命令后的字符echo off 表示在此语句后所有运行的命令都不显示命令行本身@与echo off相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)。call 调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。p... 复制链接 扫一扫 专栏目录 BAT 批处理脚本教程 03-30 BAT 批处理脚本教程 bat的一些经典代码,学习必备! 01-20 来自cndos和批处理之家,代码都很经典。是学习批处理程序不可或缺的工具! 2 条评论 您还未登录,请先 登录 后发表或查看评论 BAT文件编写语法和技巧 03-10 BAT文件编写语法和技巧 BAT脚本编写教程(比较易懂和全面).pdf 10-12 BAT脚本编写教程 BAT编程简明教程.rar_BAT编程简明教程_bat脚本 09-21 Windows下详细 BAT脚本教程,适用于脚本入门者。 深入了解 Bat 脚本:简单而强大的自动化工具——基础版 最新发布 Kuangtian的博客 11-20 616 Bat脚本是指批处理脚本(Batch Script),也可以简称为批处理或批处理文件。它是一种运行在Windows操作系统上的脚本文件,使用扩展名为.bat。Bat脚本是一种文本文件,其中包含了一系列的命令和指令,按照顺序执行。它使用了简单的命令语法,可以用于执行多个命令或操作的批处理任务。 BAT脚本编写教程 08-19 echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。 bat批处理脚本语法学习 dongxing515的博客 06-09 5711 bat批处理脚本语法学习 【最全的】BAT 批处理脚本教程 热门推荐 木牛的博客 09-13 1万+ 第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处理命令。 小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程。 了解了大概意思后,我们正式开始学习.先看一个简单的例子! @echo off echo "欢迎来到非常BAT!" pause 把上面的3条命令保存为文件test.bat或者test.cmd然后执行, 他就会在屏幕上显示以下二行话: 欢迎来到非常B Bat脚本学习 iampeijiao的博客 08-12 5060 一,基础语法 @echo 窗口设置:mode con cols=80 lines=30 color 0a @echo 精简输出 @echo off @echo 资源管理器中打开D盘: start explorer d:\ @echo 变量赋值与显示(注意空格) set name=alex set word=My name is %name% . echo 最终字符串:%word% @echo 新建文件 echo 我会写入文件1中>test1.txt echo 我会写入文件2中>test2 bat脚本编写教程 12-06 windows下编写脚本的教程。有用,推荐 BAT 脚本编写教程 04-07 echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,我们就从他们开始学起。 echo 表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身 ... window BAT脚本编写教程 07-21 BAT脚本编写教程 简单的bat脚本命令及使用 bat脚本编写 10-08 echo、@、call、pause、rem(小技巧:用::代替rem)是批处理文件最常用的几个命令,从他们开始学起。 Windows中编写脚本BAT批处理命令入门.pdf 03-19 Windows中编写脚本BAT批处理命令入门.pdf psftp工具bat脚本编写使用 03-26 windows 下 上传,下载 工具,psftp工具bat脚本编写使用 快速解压和压缩rar文件【bat脚本】 07-20 电脑已安装rar.exe程序 内含解压rar文件和压缩rar文件的bat脚本及使用说明 使用简单 建议直接存在桌面进行解压和压缩操作,只需要修改rar文件名即可 bat脚本编写教程菜鸟 06-28 ### 回答1: 对于一个新手来说,学习BAT脚本编写可能会显得有些困难,但只要按照以下几个步骤,就可以完成初步的学习: 第一步,了解BAT脚本的基本知识。BAT文件是一种批处理文件,它可以自动执行一系列的命令,这些命令可以简化许多日常工作的操作。BAT文件中可以包含各种命令,例如:echo、dir、copy、md等等,这些命令都是DOS系统中原有的命令。 第二步,学习BAT脚本的语法。BAT脚本有着自己的语法规则,新手需要学习如何编写语法正确的脚本。例如,每行命令要以“@echo off”作为开始,表示关闭显示命令,同时标志着本脚本为BAT文件。 第三步,了解BAT脚本的常用命令。BAT脚本有很多常用命令,例如:echo命令用于输出文本消息,rem命令用于添加注释,if命令用于条件判断,set命令用于定义变量等等。学习这些常用命令是BAT脚本编写的基础。 第四步,使用BAT脚本解决实际问题。学习BAT脚本后,新手可以试着使用BAT脚本解决一些实际问题,例如,制作自动备份脚本、自动清理垃圾文件脚本等等。 总之,学习BAT脚本需要耐心和学习的毅力,只要按照以上几点进行学习,就可以成为一个BAT脚本编写的初学者。 ### 回答2: BAT脚本是一种批处理脚本,它可以在Windows平台下执行多个命令或一个复杂的算法,这对于喜欢用命令行的管理员或需要批量执行任务的用户非常有用。 编写BAT脚本,需要以下几个步骤: 1. 在文本编辑器(如记事本)中新建一个文件,后缀名为.bat。文件名可以任意起,只要后缀名是.bat就行。 2. 在文件的开头,用@echo off命令关闭脚本的输出信息。如果没有这个命令,脚本执行时会把每个命令的输出都显示在屏幕上,很不方便。 3. 根据需要编写多个命令,每个命令占一行。命令可以是Windows自带的命令(如dir、cd等),也可以是其他应用程序的命令(如ping、xcopy等)。 4. 可以使用变量来存储和处理数据,使用for循环和if语句来实现逻辑控制。 以下是一个简单的例子,演示了如何使用BAT脚本创建一个目录、移动文件和删除文件: @echo off REM 创建目录 mkdir mydir REM 移动文件 move *.txt mydir REM 删除文件 del *.bak 5. 保存文件,并双击运行bat文件,或者在命令行窗口中进入脚本所在目录,执行.bat文件即可。 以上是BAT脚本编写教程的简介。BAT脚本虽然功能比较简单,但也有很多灵活、高级的应用场景。如果想深入学习BAT脚本编写,可以参考一些高级教程或者参与BAT脚本编写的论坛、社群,获取更多的经验和技巧。 ### 回答3: Bat脚本是Windows上的一种脚本语言,用于自动化执行一些操作和任务。Bat脚本通常以“.bat”或“.cmd”文件扩展名结尾,它是基于批处理文件的一种脚本语言。Bat脚本是一种非常方便的自动化工具,几乎可以完成任何的命令行操作和Windows管理操作。 在编写Bat脚本之前,我们需要掌握基本的编程知识以及Windows一些基本的命令行操作。以下是一些基本的编写Bat脚本的步骤: 1. 打开记事本或任何您喜欢的文本编辑器,在文件中输入您要执行的命令或任务。例如:echo "Hello World!"表示打印“Hello World!”在输出窗口上。 2. 将文件保存为以“.bat”或“.cmd”结尾的文件,然后单击“保存”。 3. 双击新创建的.bat文件,它将打开一个命令行窗口并执行您编写的命令或任务。您也可以使用命令行或任务计划程序定期执行您的.bat文件。 现在让我们探讨一些更复杂的Bat脚本编写技巧。例如: 1. Bat脚本可以包含循环,if语句和不同的变量类型。这些语法规则与其他编程语言类似。 2. 使用set命令来创建和分配变量。例如,set myvar = hello,其中“myvar”是变量名,“hello”是变量值。您可以使用%myvar%来访问变量的值。 3. 使用echo命令来在输出窗口中打印消息或变量值。例如,echo %myvar%表示在输出窗口中打印变量的值。 4. 使用if语句来执行条件语句。例如,if %myvar%== hello (echo "Equal") else (echo "Not equal")表示如果变量myvar等于“hello”,则输出“Equal”否则输出“Not equal”。 总之,Bat脚本是一种非常实用和方便的工具,可以自动化执行许多常用的命令行操作和Windows管理操作。学习Bat脚本编程可以大大提高我们的工作效率。希望以上介绍对Bat脚本初学者有帮助。 “相关推荐”对你有帮助么? 非常没帮助 没帮助 一般 有帮助 非常有帮助 提交 致守 CSDN认证博客专家 CSDN认证企业博客 码龄13年 暂无认证 19 原创 1345 周排名 4万+ 总排名 411万+ 访问 等级 1万+ 积分 1万+ 粉丝 2197 获赞 277 评论 1万+ 收藏 私信 关注 热门文章 中文乱码在线恢复网站 300728 C语言详解 FILE文件操作 198061 MySQL数据库改名的三种方法 141590 wifi提速技巧:十大方法瞬间提升wifi速度 87931 虚拟机怎么安装vmware tools 81535 分类专栏 硬件 3篇 stm32 45篇 bat&cmd 42篇 fatfs 48篇 hardware 2篇 mysql 47篇 Computer Graphics 2篇 vm 1篇 planning 10篇 lua 4篇 API 1篇 ErrorCode 1篇 image processing 1篇 openTCS 2篇 CrossPlatform 1篇 链接库 19篇 dwin 1篇 Linux 274篇 AutoCAD 3篇 QT 68篇 c++ 197篇 c 136篇 c++/CLI 50篇 Serialization 12篇 Virtual Machine 8篇 Algorithm 64篇 SLAM 4篇 CAN 54篇 android 21篇 无线 10篇 network 170篇 USB 10篇 Database 27篇 Software Framework 4篇 Java 3篇 SQLite 7篇 ssh 7篇 软件测试 2篇 其他 59篇 UML 2篇 python 20篇 SVM 7篇 RTOS 5篇 MessageQueue 26篇 Laser Navigation 1篇 调度 7篇 专利 2篇 Data Structure 5篇 Makefile 23篇 图论 9篇 IDE 13篇 git 10篇 最新评论 Linux中fuser命令用法详解 CSDN-Ada助手: 推荐 CS入门 技能树:https://edu.csdn.net/skill/gml?utm_source=AI_act_gml 速度规划(梯形、余弦、多项式、7段S型、7段修正S型、15段S型、31段S型) 2301_81537150: 博主您好 请问可以加个联系方式吗 有偿求取代码 CAN通信标准帧和扩展帧(全网最透彻解答) 白小白_: 请问这贴事原贴么,如果是的话,我有点疑问,就是11开头的11个字节是什么 一个数据帧-标准帧的 一共不就44 +8n位 所以11个字节指的是什么位置的啊 基于 UDP 的 组播、广播详解 影362: 讲的很细致,感谢 玩转CODESYS 入门篇(一)-- 认识CODESYS qq_44319402: 您好,请问能请假一下设备描述文件编写相关的知识吗 最新文章 libmodbus官方手册中文翻译 socketpair机制 Windows C++中__declspec(dllexport)的使用 2024 03月 25篇 02月 5篇 01月 30篇 2023年183篇 2022年293篇 2021年316篇 2020年139篇 2019年51篇 2018年95篇 2017年169篇 目录 目录 分类专栏 硬件 3篇 stm32 45篇 bat&cmd 42篇 fatfs 48篇 hardware 2篇 mysql 47篇 Computer Graphics 2篇 vm 1篇 planning 10篇 lua 4篇 API 1篇 ErrorCode 1篇 image processing 1篇 openTCS 2篇 CrossPlatform 1篇 链接库 19篇 dwin 1篇 Linux 274篇 AutoCAD 3篇 QT 68篇 c++ 197篇 c 136篇 c++/CLI 50篇 Serialization 12篇 Virtual Machine 8篇 Algorithm 64篇 SLAM 4篇 CAN 54篇 android 21篇 无线 10篇 network 170篇 USB 10篇 Database 27篇 Software Framework 4篇 Java 3篇 SQLite 7篇 ssh 7篇 软件测试 2篇 其他 59篇 UML 2篇 python 20篇 SVM 7篇 RTOS 5篇 MessageQueue 26篇 Laser Navigation 1篇 调度 7篇 专利 2篇 Data Structure 5篇 Makefile 23篇 图论 9篇 IDE 13篇 git 10篇 目录 评论 2 被折叠的 条评论 为什么被折叠? 到【灌水乐园】发言 查看更多评论 添加红包 祝福语 请填写红包祝福语或标题 红包数量 个 红包个数最小为10个 红包总金额 元 红包金额最低5元 余额支付 当前余额3.43元 前往充值 > 需支付:10.00元 取消 确定 下一步 知道了 成就一亿技术人! 领取后你会自动成为博主和红包主的粉丝 规则 hope_wisdom 发出的红包 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 余额充值 听说有一门技术叫windows批处理(bat),请问它有什么现实用途? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册Microsoft Windows操作系统Python批处理VBA听说有一门技术叫windows批处理(bat),请问它有什么现实用途?看介绍好像和vba、python类似,比如我作为一个普通人,我可以用vba合成去重excel文件,减少我的工作量。 我可以用python建博客 那么批…显示全部 关注者873被浏览715,058关注问题写回答邀请回答好问题 1416 条评论分享135 个回答默认排序Ivony编程话题下的优秀答主 关注哎……下面的答案这都什么妖魔鬼怪批处理,顾名思义就是批量的处理某些任务的东西,bat就是batch的缩写,batch就是批量的意思。这玩意儿和Windows还是CMD啥的都没有半毛钱关系。因为这是DOS的遗留而已,我们都知道,微软是靠做DOS起家的。最早的Windows不过是DOS的一个应用而已。直到Windows 95才升级成为一个操作系统,但本质上还是从DOS实模式引导来的。所以Windows批处理这个名字就极其扯淡。到了Windows 2000之后,原有的DOS内核已经被全部扔掉。但是为了兼容一些在命令行下面比较方便处理的任务,也便于系统运维人员的使用,还有早期DOS用户的迁移。就做了个叫做CMD的玩意儿,本质上CMD就是一个Windows下的应用,支持有限的一些DOS兼容指令完成指定的操作。它甚至都不能叫做shell,因为Windows的shell就是explorer.exe。CMD就是一个可以用来执行特定DOS兼容指令的命令提示符。真正的Shell是PowerShell,那才是一个全功能的CLI,理论上可以访问Windows所有的功能。再后来为了PowerShell可以跨平台使用,微软干脆基于dotnet core做了PowerShell的跨平台版本PowerShell Core。时至今日,BAT的确仍然可以做一些简单的需要批量处理的工作,例如初始化系统,备份文件,安装或者部署应用和软件。但是BAT的能力实在太过于羸弱,并且大部分Windows的应用和功能都不支持CLI,也就无法用BAT来控制。例如最简单的:启用或者禁用系统功能模块,或是修改组策略,变更网络配置等(尽管有部分可以通过WMI或者regedit来曲线救国)。事实上,很多时候WSH(Windows脚本宿主)的能力比BAT要强得多,因为WSH可以使用脚本直接访问COM组件和服务,使用VBScript和JavaScript编写。然而喜欢看花边的那些家伙有几个知道啥叫作COM……这,才是为啥那个CMD这么多年不更新的原因,因为微软内部IT专业人员的批处理要么用脚本(比如说那个著名的slmgr.vbs),要么直接组策略下发……无论如何,这些都是过时的技术了。本质上.NET就是COM技术的迭代。PowerShell就是更强大的WSH。微软的思路是一脉相承的,这个思路并没有什么问题。也不是无脑黑们所YY的那样……如果只知道无脑黑微软,而不知道从历史中学到知识,我看很多技术迟早要重新再发明一次,然后换个新的名字出来忽悠人……编辑于 2024-01-20 01:37赞同 48925 条评论分享收藏喜欢收起NaHCO3 关注本质是shell脚本如果从头开始学的话不如直接学powershell,好用很多发布于 2022-08-04 18:34赞同 7411 条评论分享收藏喜欢
bat(批处理文件类型)_百度百科
批处理文件类型)_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心bat是一个多义词,请在下列义项上选择浏览(共6个义项)展开添加义项bat播报讨论上传视频批处理文件类型收藏查看我的收藏0有用+10批处理文件,在DOS和Windows(任意)系统中,.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的扩展名为bat 或cmd。比较常见的批处理包含两类:DOS批处理和PS批处理。PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。更复杂的情况,需要使用if、for、goto等命令控制程序的运行过程,如同C、Basic等高级语言一样。如果需要实现更复杂的应用,利用外部程序是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。批处理程序虽然是在命令行环境中运行,但不仅仅能使用命令行软件,任何当前系统下可运行的程序都可以放在批处理文件中运行。中文名批处理文件外文名Batch(bat)操作系统Windows/DOS类 别脚本语言适用系统DOS和WindowsWindows主体%windir%\system32\cmd.exe目录1简单程序2Win9x3作用4变量▪类型▪命名▪扩展5关于参数6常用命令▪ECHO▪PAUSE▪CLS▪REM▪SET▪IF▪GOTO▪FOR▪批处理示例7命令返回值8特殊符号▪@-隐藏命令▪&&和||判断▪|-管道▪&-分行符▪^分行与转义符▪通配符▪括起来▪大于和大于大于9文件技巧▪文章结构▪命令帮助▪环境变量▪处理文件10语句结构11代码示例▪清理垃圾▪网络设置▪关机▪修改注册表12其它简单程序播报编辑批处理是基于cmd的可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。第三,每个编写好的批处理文件都相当于一个DOS的外部命令 你可以把它所在的目录放到你的DOS搜索路径变量%path%(详见后面)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:\BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:\batch,你就可以在任意位置运行所有你编写的批处理程序。Win9x播报编辑C:盘根目录下的AUTOEXEC.BAT批处理文件是自动运行批处理文件,每次系统启动时会自动运行该文件,即开机自启动你可以将系统每次启动时都要运行的命令放入该文件中,例如设置搜索路径,调入鼠标驱动和磁盘缓存,设置系统环境变量等。作用播报编辑简单的说,批处理的作用就是自动的连续执行多条命令。这里先讲一个最简单的应用:在启动wps软件时,每次都必须执行(“>”前面内容表示DOS提示符):C:\>cd wpsC:\WPS>spdosC:\WPS>pyC:\WPS>wbxC:\WPS>wps如果每次用WPS之前都这样执行一遍,还是十分麻烦。不过用批处理,就可以实现将这些麻烦的操作简单化,首先我们编写一个runwps.bat批处理文件,内容如下:@echo offC:cd\wpsspdospywbxwpscd\以后,我们每次进入wps,只需要运行runwps这个批处理文件即可。变量播报编辑类型批处理中的变量基本是万能的,可以储存各种各样的数据,不过用来计算时,会发现变量类型转为了int,数值的极端范围为[-2147483648,2147483647],如果不拿来计算的话,似乎数万位也是可以的命名批处理的变量命名没有什么限制..不过建议命名还是遵守标准的命名方法,不然@Echo OffSet IF=Set%IF% lF=Goto:IFIF %IF%==IF %lF% IF像这样的代码是很蛋疼的...正是因为变量的名称是可以自由调配的 : 数字 字母 甚至汉字都可以变成变量名。不像VBS一样。扩展扩展,你可以理解为显示出这个的值,如果你想要使用这个变量的值一般情况下都要扩展扩展方式:%变量%或!变量!其中!变量!是延迟扩展,需要加上SetLocal EnableDelayedExpansion语句才能够实现,延迟扩展对于新手来说是一个很难理解的东西,就这么说吧,当你的变量在一个语句的内部受到了改变,而在这个改变之后又要输出,那么你必须要延迟扩展,这个牵扯到了奇奇怪怪的预处理机制,不详解了.用连接符号连起来的语句,if,for和它们后面括号内的内容都是属于一个语句例:@echo offset num=10set num=100&echo %num%echo %num%echo 虽然已经将num的值更改为100,但由于没有延迟扩展,所以值仍为10,不过在下一个语句num的值就改变了pause>nul例:@echo offSetLocal EnableDelayedExpansionset num=10set num=100&echo !num!echo 两个num的值一样了echo %num%pause>nul变量在扩展过程中还可以做一点手脚例:set str=1234567890echo %str:~0,5%echo %str:~1,5%echo %str:~-5%echo %str:~5,-2%echo %str:7890=54321%pause>nul很神奇吧?这就是对字符串的处理,这个是批处理的特性,叫“变量延迟”关于参数播报编辑参数在批处理的表达是%0,%1,%2....%9 ,以及全部参数%*(不包括%0)%0的初始量是批处理本身路径,类似%~f0一般你只能取前九个参数,除非你使用%*shift命令允许你获取后面的参数格式:shift [/n]n为1~8的数shift 会使%0变成%1,%1变成%2……%9变成原来的第10个参数(不推荐)一般使用shift /1,将会从%1开始替换,保留原%0注意:call标签时参数也是可用的,而且当返回时参数将变回原来的例子:@echo offcall :标签 arg1 arg2echo %1::会显示回显已打开echo %2exit:标签echo %1::这时会显示arg1echo %2::这时会显示arg2exit /b常用命令播报编辑ECHO显示信息,或将命令回显打开或关上。ECHO [ON | OFF]ECHO [message]要显示当前回显设置,键入不带参数的 ECHO。echo 命令的第一个用法,echo on和echo offecho on表示打开回显,echo off表示关闭回显,何为回显?打开回显就是执行命令时会把命令显示出来,关闭回显反之.echo 命令的第二个用法,echo message,这个很简单,就是显示后面的信息echo 命令第三个用法,显示当前回显设置,就是显示回显打开或关闭echo也可以输出文件。下面再说。以下的这段代码可以让你很好地理解echo的用法(包括如何用echo输出空行)echo 这是没有关闭回显echo;echoecho offecho 这是关闭了回显echo;echopausePAUSE暂停批处理程序,并显示以下消息:请按任意键继续. . .这个命令没有什么好说的,要暂停时直接pause就行了CLS清除屏幕。CLS这个命令也没有什么好说的,清屏,自己试一次就知道了REM在批处理文件或 CONFIG.SYS 里加上注解或说明。REM [comment]这个命令同样没什么好说的,用法就是rem 注释PS:其实可以用"::"代替"REM",可以提高执行速度,不过REM的兼容性更好,我还是建议大家用rem注释SET1.给变量赋值(撤销)例1:@echo offset str=My name is Xiaoecho %str%rem 批处理中的变量一般需要用%来扩展,详见特殊符号一节pause>nul例2:@echo offset str=ABCDEFGHIJKLMNecho %str%set str=echo;%str%rem 还记得加";"可以实现什么效果吗?一个空行,为什么要这么做呢?想不出来的话去掉这个";"试试pause>nul上面的例子中,一个是给变量赋值,一个是撤销变量的值2.等待用户输入数据(开关/P)例:@echo offset /p name=请输入你的姓名:set /p age=请输入你的年龄(纯数字):echo 所以,%name%今 年%age%岁咯?pause>nul3.计算(开关/A)例1:@echo offset /a num=(12*2)+(13*4)echo (12x2)+(13x4)=%num%pause>nul例2:@echo offset /p num=请输入一个数字(不要超过2147483647):REM 批处理能处理的数字不能超过32位(二进制)set /a num*=2echo 这个数字的两倍是%num%pause>nul附:Set /a num*=2与set /a num=num*2等价() - 分组! ~ - - 一元运算符* / % - 算数运算符+ - - 算数运算符<< >> - 逻辑移位- 按位“与”^ - 按位“异”| - 按位“或”= *= /= %= += -= - 赋值&= ^= |= <<= >>=, - 表达式分隔符set /a支持多行表达式并列,比如set /a num1=1+1,num2=1+2,num3=1+3并且set /a不需要扩展变量,比如set /a num=%num2%+%num3%与set /a num=num2+num3等价以上内容仅为基础教程4.显示当前已定义变量例:@set@pause>nul是不是很简单?其实它还有更高级的用法呢@set a@pause>nul@set s@pause>nul你们发现什么了吗??它的用法就是这些,不用多说了IF1.IF的第一种用法,比较字符串例:set /p PW=请输入密码:if %PW%==bat (echo YES! ) ELSE (Rem [else] 为可选参数,表示否则,即如果变量PW等于bat则输出YES!否则输出NO! echo NO! )pause>nul通过set /p和if可以实现一个简单的密码判断,当然这个密码判断可以很轻易地被破解,仔细动脑筋想一想,该怎么破解呢.不过这个密码判断尚有不足之处,假如我们什么都不输入直接回车,便会提示错误,那该怎么办呢?很简单,只要加上双引号(其它的符号也行)就行了=>if "%PW%"=="bat"2.IF的第二种用法,比较数字例:set /p num1=请第一个输入数字:set /p num2=请第二个输入数字:if not %num1% LSS %num2% (rem lss表示小于rem [not]为可选参数,表示非,即如果变量num1不小于变量num2就输出第一个数字大,否则输出第二个数字大echo 第一个数字大) ELSE (echo 第二个数字大)pause>nul这段代码可以实现一个简单的判断,不过尚有不足之处-----如果这两个数字相等呢,这就要请出我们的else if啦(当然你也可以用几个if来判断)set /p num1=请第一个输入数字:set /p num2=请第二个输入数字:if "%num1%" gtr "%num2%" (echo 第一个数字大) ELSE if "%num1%" EQU "%num2%" (echo 一样大) ELSE (echo 第二个数字大 )pause>nul------比较运算符-----EQU - 等于NEQ - 不等于LSS - 小于LEQ - 小于或等于GTR - 大于GEQ - 大于或等于3.IF的第三种用法,检测文件(夹)是否存在例:@echo offif exist C:\windows (echo 你的C盘有windows文件(夹^)) else (echo 你的C盘没有windows文件(夹^))pause>nul"^"为转义符号,在特殊符号一节再作讲解4.IF的第四种用法,检测变量是否被定义例:@echo offset var=aiwozhonghuaif defined var (echo 变量var已被定义,它的值为%var%) else (echo 变量var没有被定义)pause>nul去掉第一行的set看看执行结果有什么不同,你明白它的用法了吗?5.IF的第五种用法,判断返回值(ERRORLEVEL)要判断返回值,首先要理解返回值是个什么概念,批处理中的返回值一般表示了上个命令的执行结果(成功/失败/等)每个命令执行完毕后返回值都会做相应的更改,一般返回值为0表示成功,1表示失败,有一些第三方的返回值比较特殊(如Choice.exe,Tmos.exe,Cmos.exe),在这里就不讲解了例:@echo offecho;>>%systemroot%\test.txtif errorlevel 0 ( echo 写入成功! ) else echo 写入失败pause>nul这段代码尝试向%systemroot%\system32\写入数据,如果权限不够或杀毒软件拦截就会写入失败,这时就会显示"写入失败".不知道%systemroot%表示了什么?单独键入set自己仔细看一下结果.不过看到后面你会发现这段代码还有更简便的写法注:用 if errorlevel判断返回值时要将返回值从大到小排列例:@echo offchoice /C:ABC /n "A/B/C"if errorlevel 3 echo You choose the Cif errorlevel 2 echo You choose the Bif errorlevel 1 echo You choose the Apause>nulGOTO将 cmd.exe 导向到批处理程序中带标签的行。GOTO labellabel 指定批处理程序中用作标签的文字字符串。标签必须单独一行,并且以冒号打头。如果命令扩展名被启用,GOTO 会如下改变:GOTO 命令接受目标标签 :EOF,这个标签将控制转移到当前批脚本文件的结尾。不定义就退出批脚本文件,这是一个容易的办法。有关能使该功能有用的 CALL 命令的扩展名描述,请键入CALL /?。label是什么?这可不是命令label,它指的是标签,标签是啥?见例子例:@echo offset /p pw=请输入密码:if "%pw%"=="bathome" goto yesgoto :eofrem 未定义的:eof会退出脚本文件:yesecho 密码正确!pause>nul这是一个更加完整的密码判断,仔细阅读并执行这行代码,你知道标签是什么了吗,没错,那个:yes就是标签了!标签的格式:标签名关掉回显以后你有没有发现什么?没错,标签所在的那一行没有被执行,这就是为什么::比rem更快的原因了,但是标签不能被使用在一个语句的内部,主要就是被括号括起来的语句(是的,被括号括起来的语句被看作一个整体),因此::的兼容性没有rem那么好附:"::"其实就是不规范的标签名...FOR1.FOR对一组文件中的每一个文件执行某个特定命令。FOR%variableIN (set) DO command [command-parameters]%variable 指定一个单一字母可替换的参数。(set) 指定一个或一组文件。可以使用通配符。command 指定对每个文件执行的命令。command-parameters为特定命令指定参数或命令行开关。例:@echo offfor %%i in (*.txt) do echo %%ipause>nul这段代码会显示当前文件夹下所有的txt文件@echo offfor %%i in (菜 芽 小 公 公) do echo %%ipause>nul这段代码会显示菜芽小公公注:%%i为for输出专用变量格式,其中i可以是a/A/0-z/Z/9和一些符号什么的(如! # 不过不建议使用),在cmd中只能用一个%2.FOR /LFOR /L %variable IN (start,step,end) DO command [command-parameters]该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1)。例:@echo offfor /L %%a in (1 2 1000) do echo %%apause>nul这个用法很简单,没有什么要讲解的,从这段代码主要是看出了逗号可以省略.当然还有一些稀奇古怪的用法为了防止新手弄混在这里就不讲解了3.FOR /RFOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。 这个命令同样有一些看起来很奇怪的用法,为了防止新手迷糊就只讲解基础的例:@echo offfor /r C:\Windows\system32 %%i in (*) do echo %%ipause>nul这段代码枚举了C:\Windows\system32下所有的文件,包括子文件夹里的4.FOR /DFOR /D %variable IN (set) DO command [command-parameters]如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。这个命令的用法和上面差不多,只不过是枚举目录名,不详解了5.FOR /Ffor /f是一个非(丧)常(心)复(病)杂(狂)的命令...让我们从它的第一个用法来讲:FOR /F ["options"] %variable IN (file-set) DO command [command-parame]例:@echo offecho 1,1 2,1 3,1 4,1>>test.txtecho A1,2 2,2 3,2 4,2>>test.txtecho 1,3 2,3 3,3 4,3>>test.txtecho A1,4 2,4 3,4 4,4>>test.txtrem 以上代码在当前文件夹下生成了一个test.txt,打开看看?For /F %%i In (test.txt) Do Echo %%ipause>nulFor /F "tokens=2" %%i In (test.txt) Do Echo %%ipause>nulFor /F "tokens=3" %%i In (test.txt) Do Echo %%ipause>nulFor /F "tokens=4" %%i In (test.txt) Do Echo %%ipause>nul我想执行完这个bat,再分析一下结果和代码,聪明的你一定了解了tokens的用处for /f 默认以空格为分隔符,将每一行分割为几个元素,而tokens就表示取第几个元素.但假如我们要取的不是一个元素呢?需要全部显示出来怎么办?tokens=* 表示取所有元素,用%%i输出tokens=1,2,3,4或tokens=1-4 然后用%%i或%%i,%%j,%%k,%%l 输出其实我们还有其他的方法,比如请出delims参数例:@echo offrem test.txt已经有了,就不生成了for /f "delims=*" %%i in (test.txt) do echo %%ipause>nuldelims是个啥玩意儿?其实这就是分割符的设定,默认以空格为分隔符,你可以将分隔符设置成其他的,你的文本就不会被分割了,delims同样支持多个分隔符,格式delims=第一个分隔符,第二个分隔符,第三个分隔符啊哈,还有一个skip和eol,skip表示忽略前几行,比如skip=10表示忽略这个文本的前十行,我这个文本只有4行,如果你加上skip=10的话就什么都不会输出了eol表示忽略以某个符号开头的行,比如eol=A,当某一行的开头是A的时候,这一行就不会被处理,不过支持设置一个符号for /f同也可以处理字符串FOR /F ["options"] %variable IN ("string") DO command [command-parameters]字符串需要用双引号引起来,其余用法一样,不过这里就要讲到usebackq参数了,for /f是支持处理多个文件的,文件直接用空格隔开(某些符号也可以),假如文件名中含有空格怎么办呢?那好像只能用双引号引起来了,但是用双引号引起来会被识别成字符串的,这时就要请出usebackq参数了,加上这个参数,带引号的字符串也会被识别为文件~FOR /F ["options"] %variable IN ('command') DO command [command-parameters]用for /f来处理命令执行的结果,命令要用单引号引起来例:@echo offfor /f "skip=3" %%i in ('tasklist') do echo;%%ipause>nul这段代码就处理了命令ipconfig的执行结果,单独键入tasklist看会出现什么?================================================~I - 删除任何引号("),扩充 %I%~fI - 将 %I 扩充到一个完全合格的路径名%~dI - 仅将 %I 扩充到一个驱动器号%~pI - 仅将 %I 扩充到一个路径%~nI - 仅将 %I 扩充到一个文件名%~xI - 仅将 %I 扩充到一个文件扩展名%~sI - 扩充的路径只含有短名%~aI - 将 %I 扩充到文件的文件属性%~tI - 将 %I 扩充到文件的日期/时间%~zI - 将 %I 扩充到文件的大小%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串组合修饰符来得到多重结果:%~dpI - 仅将 %I 扩充到一个驱动器号和路径%~nxI - 仅将 %I 扩充到一个文件名和扩展名%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名%~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个驱动器号和路径。%~ftzaI - 将 %I 扩充到类似输出线路的 DIR===================================================这些不多说了,自己用for /r命令输出的时候把%%i改成%%~nxi之类的试一试就理解了批处理示例1. IF-EXIST1)首先用记事本在C:\建立一个test1.bat批处理文件,文件内容如下:@echo offIF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BATIF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist然后运行它:C:\>TEST1.BAT如果C:\存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。2)接着再建立一个test2.bat文件,内容如下:@ECHO OFFIF EXIST \%1 TYPE \%1IF NOT EXIST \%1 ECHO \%1 does not exist执行:C:\>TEST2 AUTOEXEC.BAT该命令运行结果同上。说明:(1) IF EXIST 是用来测试文件是否存在的,格式为IF EXIST [路径+文件名] 命令(2) test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身) ,这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。(3) 更进一步的,建立一个名为TEST3.BAT的文件,内容如下:@echo offIF "%1" == "A" ECHO XIAOIF "%2" == "B" ECHO TIANIF "%3" == "C" ECHO XIN如果运行:C:\>TEST3 A B C屏幕上会显示:XIAOTIANXIN如果运行:C:\>TEST3 A B屏幕上会显示XIAOTIAN在这个命令执行过程中,DOS会将一个空字符串指定给参数%3。2、IF-ERRORLEVEL建立TEST4.BAT,内容如下:@ECHO OFFXCOPY C:\AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHO 文件拷贝失败IF ERRORLEVEL 0 ECHO 成功拷贝文件然后执行文件:C:\>TEST4如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。因此下面的批处理文件是错误的:@ECHO OFFXCOPY C:\AUTOEXEC.BAT D:\IF ERRORLEVEL 0 ECHO 成功拷贝文件IF ERRORLEVEL 1 ECHO 未找到拷贝文件IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误无论拷贝是否成功,后面的:未找到拷贝文件用户通过ctrl-c中止拷贝操作预置错误阻止文件拷贝操作拷贝过程中写盘错误都将显示出来。命令返回值播报编辑backup0 备份成功1 未找到备份文件2 文件共享冲突阻止备份完成3 用户用ctrl-c中止备份4 由于致命的错误使备份操作中止diskcomp0 盘比较相同1 盘比较不同2 用户通过ctrl-c中止比较操作3 由于致命的错误使比较操作中止4 预置错误中止比较diskcopy0 盘拷贝操作成功1 非致命盘读/写错2 用户通过ctrl-c结束拷贝操作3 因致命的处理错误使盘拷贝中止4 预置错误阻止拷贝操作format0 格式化成功3 用户通过ctrl-c中止格式化处理4 因致命的处理错误使格式化中止5 在提示“proceed with format(y/n)?”下用户键入n结束xcopy0 成功拷贝文件1 未找到拷贝文件2 用户通过ctrl-c中止拷贝操作4 预置错误阻止文件拷贝操作5 拷贝过程中写盘错误特殊符号播报编辑@-隐藏命令开启了echo off能够起到隐藏命令的效果,而@同样能起到这个效果,只不过需要在每条命令前面都加一个...&&和||判断还记得用if errorlevel来判断命令成功与否吗?&&和||同样能起到这个效果,&&表示前面的命令成功以后执行后面的命令,||反之例:@echo;>>%SystemRoot%\system32\test.txt&&echo 成功!||echo 失败@pause>nul|-管道将前一个命令执行的结果发送给后一个命令例:@echo 你好|find "你"@tasklist|find "exe"&-分行符可以把几个命令写在同一行例:@echo 123&@echo 456pause>nul^分行与转义符1.分行可以把一个命令写成多行哦例:@echo 1^2^3^4@pause>nul复制上面的命令,执行结果是什么?这就是分行符的作用2.转义当我们试图输出一个&的时候,我们会发现输出不了...因为它被当成分行符处理了这时就要请出转义符^了,它可以剥夺后面第一个符号的特殊地位,变为普通符号(这其实是一个很神奇的功能,之所以神奇...赘不详述)例:@echo ^&@pause>nul这样就输出了&另外,当存在a变量(前面set /p a=或set a=给a赋值了)想要输出%a%,一是可以用转义符^,还可以:echo %%a%%这样既可将两个百分号识别为一个,起到了转义的作用还有些特殊情况不需要转义:echo "0000|000"用引号括起来可以起到一定的转义的作用,包括set "a=a的值"等但特别特殊的情况比如获取%1时存在转义符很难处理,没办法正常引用通配符什么是通配符?举个例子:*.jpg表示所有的jpg文件,*表示所有文件,如“AAA.jpg”.*可以为任意字符,但?只表示一个字符,比如?.jpg只表示文件名只有一个的jpg文件,比如“1.jpg”,“比.jpg”.括起来括起来的语句是一个整体大于和大于大于在这里注意: 在重定向符号 ">" 以及 ">>" 前必须添加空格,因为Batch具有不唯一性所以在很多时候不加空格也能正常使用。但是日常使用中必须添加空格否则失败的几率很大,要么是无法创建/输出,要么文件是空的。请不要使用不添加空格的不正确用法.echo 123 >>one.txt可以输出123追加到one.txt中echo 123 >one.txt可以输出123覆盖one.txt中原先的内容nul是一个系统保留字,所以>nul不会输出到任何文件,可以起到隐藏命令执行结果的效果2 >nul可以起到隐藏命令失败执行结果的效果<可以从文件中读取数据到某个命令中,不过这个命令得等待用户输入例:@echo offecho 123 >>00.txtset /p num=<00.txtecho 数字是%num%pause>nul有些命令不止需要一个>nul,如要连接,需要:>nul 2>nul以此类推如果前面有数字,需要添加空格ping >nul 2>nul=1>nul 2>nul ping=ping >nul 2>&1.... X>&2 X>&2 X>&3等nul指空设备,简单来说就是隐藏输出。2>&1 3>&2 可以一直接下去,&1 &2就是引用第一个、第二个等文件技巧播报编辑文章结构1. 所有内置命令的帮助信息2.环境变量的概念3. 内置的特殊符号(实际使用中间注意避开)4. 简单批处理文件概念5. 附件1 tmp.txt6. 附件2 sample.bat###########################命令帮助###########################vercmd /?set /?rem /?if /?echo /?goto /?for /?shift /?call /?其他需要的常用命令type /?find /?findstr /?copy /?下面将所有上面的帮助输出到一个文件echo ver >tmp.txtver >>tmp.txtecho cmd /? >>tmp.txtcmd /? >>tmp.txtecho rem /? >>tmp.txtrem /? >>tmp.txtecho if /? >>tmp.txtif /? >>tmp.txtecho goto /? >>tmp.txtgoto /? >>tmp.txtecho for /? >>tmp.txtfor /? >>tmp.txtecho shift /? >>tmp.txtshift /? >>tmp.txtecho call /? >>tmp.txtcall /? >>tmp.txtecho type /? >>tmp.txttype /? >>tmp.txtecho find /? >>tmp.txtfind /? >>tmp.txtecho findstr /? >>tmp.txtfindstr /? >>tmp.txtecho copy /? >>tmp.txtcopy /? >>tmp.txttype tmp.txt环境变量C:\Program Files>setALLUSERSPROFILE=C:\Documents and Settings\All UsersCommonProgramFiles=C:\Program Files\Common FilesCOMPUTERNAME=FIRSTComSpec=C:\WINNT\system32\cmd.exeNUMBER_OF_PROCESSORS=1OS=Windows_NTOs2LibPath=C:\WINNT\system32\os2\dll;Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\system32\WBEMPATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSHPROCESSOR_ARCHITECTURE=x86PROCESSOR_IDENTIFIER=x86 Family 6 Model 6 Stepping 5, GenuineIntelPROCESSOR_LEVEL=6PROCESSOR_REVISION=0605ProgramFiles=C:\Program FilesPROMPT=$P$GSystemDrive=C:SystemRoot=C:\WINNTTEMP=C:\WINNT\TEMPTMP=C:\WINNT\TEMPUSERPROFILE=C:\Documents and Settings\Default Userwindir=C:\WINNTpath: 表示可执行程序的搜索路径. 我的建议是你把你的程序copy 到%windir%\system32\. 这个目录里面. 一般就可以自动搜索到.语法: copy mychenxu.exe %windir%\system32\.使用点(.) 便于一目了然对环境变量的引用使用(英文模式,半角)双引号%windir%变量%%windir%% 二次变量引用.我们常用的还有%temp% 临时文件目录%windir% 系统目录%errorlevel% 退出代码输出文件到临时文件目录里面.这样便于当前目录整洁.对有空格的参数. 你应该学会使用双引号("") 来表示比如对porgram file文件夹操作C:\>dir p*C:\ 的目录2000-09-02 11:47 2,164 PDOS.DEF1999-01-03 00:47 windows批处理(bat),和它的用途 - 知乎
Windows 批处理(bat)语法大全 - 赵青青 - 博客园
BAT脚本编写教程(比较易懂和全面)_bat脚本编写教程菜鸟-CSDN博客
>bat是什么意思_bat的翻译_音标_读音_用法_例句_爱词霸在线词典
什么意思_bat的翻译_音标_读音_用法_例句_爱词霸在线词典首页翻译背单词写作校对词霸下载用户反馈专栏平台登录bat是什么意思_bat用英语怎么说_bat的翻译_bat翻译成_bat的中文意思_bat怎么读,bat的读音,bat的用法,bat的例句翻译人工翻译试试人工翻译翻译全文简明柯林斯牛津bat高中/CET4/CET6英 [bæt]美 [bæt]释义n.球棒,球拍; 蝙蝠v.用球棒击球; 轮到击球大小写变形:BatBAT点击 人工翻译,了解更多 人工释义词态变化复数: bats;第三人称单数: bats;过去式: batted;过去分词: batted;现在分词: batting;实用场景例句全部蝙蝠球棒球拍打击用球棒击球a baseball/cricket bat棒球球棒;板球球板牛津词典He bats very well.他擅长击球。牛津词典Who's batting first for the Orioles?谁代表金莺队第一个出场击球?牛津词典She didn't bat an eyelid when I told her my news.我把我最近的事告诉她时,她一点也不为所动。牛津词典It's just an idea we've been batting around.这只不过是我们一直在讨论的一种想法。牛津词典...a baseball bat.棒球球棒柯林斯高阶英语词典Australia, put in to bat, made a cautious start.轮到澳大利亚队出场击球,他们开始打得很谨慎。柯林斯高阶英语词典The old judge doesn't like the thought of no one going in to bat for the accused.老法官不希望没有人为被告辩护。柯林斯高阶英语词典He took off for Helsinki like a bat out of hell.他飞快赶往赫尔辛基。柯林斯高阶英语词典Whatever she did she did off her own bat. Whatever she did was nothing to do with me.她所做的一切都是她自己主动要做的。她做的任何事都与我无关。柯林斯高阶英语词典He learned right off the bat that you can't count on anything in this business.他立刻明白在这一行业中不能依靠任何东西。柯林斯高阶英语词典The boy traded his knife for a baseball bat.那个男孩用一把小刀换了一个棒球棍.辞典例句The thugs beat him senseless with a baseball bat.暴徒用棒球棒把他打得失去了知觉.《简明英汉词典》This country was able to win the war off its own bat.这个国家能依靠自己的力量打赢这场战争.《简明英汉词典》He will the first one to bat at the top of the inning.他将是上半局比赛中第一个击球的棒球手.期刊摘选Mr Zephyr didn't bat an eye.西风先生一点也不感到惊奇.辞典例句And then my wife went upstairs and discovered the bat.接著我老婆走上楼时,就发现了那只蝙蝠.期刊摘选She made the suggestions off her own bat , ie without being asked for them.她提这些建议完全是她自己的意思.辞典例句Bat the tattoo made him a famous man in his village.但是,他身上所刺的花使他变成了全村的名人.教父部分Gail didn't bat an eyelid when Mark told her that he had crashed the car.马克对盖尔说他把汽车撞坏了,她听了竟一点反应也没有.期刊摘选A swindler fears the truth; the bat dreads the sun.骗子害怕真理, 蝙蝠怕见太阳.期刊摘选The bat met the ball squarely.球棒正好打中棒球.期刊摘选He won't go to bat for me either.他也不会支持我的.辞典例句The boy traded his knife for a cricket bat.那男孩用他的刀子换了一个板球棒.《现代汉英综合大词典》Ther other boys coveted his new bat.其他的男孩都想得到他的新球棒.《简明英汉词典》收起实用场景例句真题例句全部高考The girls on the wesleyan academy softball were waiting for their next turns at bat during practice, stamping their feet to stay warm, eighth-grader Taylor bisbee shivered a little as she watched her teammate Paris white play.2017年高考英语北京卷 阅读理解 阅读A 原文收起真题例句英英释义Noun1. nocturnal mouselike mammal with forelimbs modified to form membranous wings and anatomical adaptations for echolocation by which they navigate2. (baseball) a turn batting;"he was at bat when it happened""he got 4 hits in 4 at-bats"3. a small racket with a long handle used for playing squash4. a bat used in playing cricket5. a club used for hitting a ball in various gamesVerb1. strike with, or as if with a baseball bat;"bat the ball"2. wink briefly;"bat one's eyelids"3. have a turn at bat;"Jones bats first, followed by Martinez"4. use a bat;"Who's batting?"5. beat thoroughly in a competition or fight;"We licked the other team on Sunday!"收起英英释义词根词缀词根: bat=beat,表示"打,击"n.bat 球棒bat打,击→n.球棒;v.打,击baton 指挥棒,警棍bat打,击+on表名词→n.指挥棒,警棍battalion 营;[常bat打,击+alion表名词→battalion→打的[队伍]→部队的营batter 牛奶面糊;击球员bat打,击+er反复做→batter接连重击battle 战役,战斗;斗争 bat打,击+tle表动词→n.战役,战斗;斗争 v.战斗,斗争,搏斗rebate 折扣,回扣re回+bat打,击+e→打回去的[东西]→回扣n.&v.combat 战斗,搏斗,格斗com共同+bat打,击→共同打→战斗debate 争论,辩论de加强+bat打,击+e→加强打击→反驳,辩论v.abate 减轻,降低a不+bat打,击+e→不再打击→减轻[痛苦]等bat 打,击bat打,击→n.球棒;v.打,击batter 接连重击;磨损 bat打,击+er反复做→batter接连重击battle 战斗,斗争,搏斗bat打,击+tle表动词→n.战役,战斗;斗争 v.战斗,斗争,搏斗词组搭配off one's own bat(Brit.)at one's own instigation; spontaneously(英)自发地;主动地right off the bat(N. Amer.)at the very beginning; straight away(北美)一开始;马上have bats in the (或 one's) belfry(informal)be eccentric or mad(非正式)行为乖张;想法荒诞;精神失常like a bat out of hell(informal)very fast and wildly(非正式)飞快地;不顾一切地not bat (或 without batting) an eyelid (或 eye)(informal)show (or showing) no surprise or concern(非正式)连眼睛也不眨一眨;毫不惊讶;毫不在意she paid the bill without batting an eyelid.她毫不在意地付了账。bat around (或 about)(informal, chiefly N. Amer.)travel widely, frequently, or casually(非正式, 主 北美)(在…)漫游;(在…)到处闲逛bat something around (或 about)bat for (或 go to bat for)(informal, chiefly N. Amer.)defend the interests of; support(非正式, 主 北美)维护;支持she turned out to have the law batting for her.最后她得到了法律的支持。at bat&I{【体育运动】}Taking one's turn to bat, as in baseball or cricket.轮到某人击球:轮到某人击球,如在棒球和板球中go to bat forTo give assistance to; defend.防守:给予帮助和援助;防卫off the batWithout hesitation; immediately立即:毫不犹豫地;立即地They responded right off the bat.他们立即作出反应have bats in (one's) belfryTo behave in an eccentric, bizarre manner.行为古怪,举止异常收起词组搭配同义词crackstrikehitcloutknock行业词典体育球棒 旅游蝙蝠 常用俚语the bat外国话You sure do have a mouth full of the bat.你的确是满口外国腔。释义词态变化实用场景例句真题例句英英释义词根词缀词组搭配同义词行业词典常听说有一门技术叫windows批处理(bat),请问它有什么现实用途? - 知乎