以前一直想学点脚本却没学,看了几个命令却不知道干什么好,上周为项目构建写几个帮助脚本后,体会到脚本在自动化方面很重要,把教训和脚本的学习记录下:
附件有完整脚本和帮助文档。
main.bat
@echo off
rem 先说使用批处理要注意的几点:
rem 1、尽量不要将批处理要操作的文件放在不同的盘符下,所有要处理的文件最好放在同一个目录下;
rem 2、文件/夹名最好不要空格,因为批处理的命令参数一般是用空格分隔的,有空格的话,用文件名做参数容易出错;
rem 3、尽量使用相对路径,不要用绝对路径;
rem 4、对于要使用但又不理解的命令,一定要先查看命令的使用说明:help cmdName
rem echo off 表示此语句后的所有运行的命令都不显示命令本身
rem @ 与echo off 相似,但它是加在每个命令的最前面,只作用于当前命令,表示运行时不显示这一命令
rem 用来注释
rem echo 表示显示此命令后的字符,也可以用于将命令后的字符串输出到文件,如下面所示
rem echo abc to file >> targetfile.txt
rem 上面的命令将把abc to file写到targetfile.txt
rem pause 暂停执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续
rem exit /b code 加上/b选项表示退出当前批处理脚本,而不是cmd.exe,相当于函数的return语句。code是个数字,表示执行结果
rem set 用于定义变量
rem call 用来调用另一个批处理,就像函数调用(如果不用call而直接调用别的批处理文件,那么执行完成那个批处理文件后将无法返回当前文件后续的命令)
rem 在被调用的批处理里,%[1-9] 表示传递进来的参数,参数是指调用者在文件名后加以空格分隔的字符串。
rem %0 表示批处理命令本身,其他参数字符串用%1到%9表示
rem 批处理调用示例,不带参数
call for.bat firstparamvalue
rem type 用来输出文件内容,下面的命令输出subfor.bat文件的内容
type subfor.bat
for.bat
@echo off
echo caller pass me : %1
@rem 调用批处理subfor.bat,并传入两个参数
set items=a b c d
set letters=x y z
for %%a in (%items%) do (
for %%b in (%letters%) do (
call subfor.bat %%a %%b
)
)
rem 对一组文件中的每一个文件执行某个特定命令
rem FOR %%variable IN (set) DO command [command-parameters]
rem %%variable 指定一个单一字母可替换的参数。
rem (set) 指定一个或一组文件。可以使用通配符。
rem command 指定对每个文件执行的命令。
rem command-parameters 为特定命令指定参数或命令行开关。
for %%a in (*.txt) do (
rem 如果文件名有空格,必须使用""
rem type "%%a"
)
cls
rem 读取text.txt中的每一行作为参数%%a的值,调用循环体
for /F "delims=" %%a in (text.txt) do (
echo %%a
)
echo for 循环命令的使用比较复杂,必须认真阅读使用说明
subfor.bat
@echo off
echo echo in subfor.bat : %1 %2
if.bat
@echo off
rem if语句有三种格式:
rem 1、判定参数是否符合期望值:if [not] "参数" == "字符串" 待执行的命令
if "%1" == "abc 123" (
echo first var'value is :abc 123
) else (
echo first var'value not excepted, it is :%1
)
rem 2、判定文件是否存在:if [not] exist [路径\\文件名] 待执行的命令
if exist "abc 123.txt" (
echo content of file abc 123.txt is :
type "abc 123.txt"
) else (
echo abc 123.txt is exist .
)
call subif.bat 3
rem 3、if errorlevel <数字> 待执行的命令
rem 返回值必须按照从大到小的顺序排列
if errorlevel 3 (
echo errorlevel is three .
) else if errorlevel 2 (
echo errorlevel is two .
) else if errorlevel 1 (
echo errorlevel is one .
) else (
echo execute success .
)
subif.bat
@echo off
if "%1" == "" (
rem 加上/b选项表示退出当前批处理,而不是退出cmd.exe
exit /b 0
) else (
exit /b %1
)
goto.bat
@echo off
if "%1" == "" (
goto default
) else if "%1" == "helloworld" (
goto helloworld
)
:default
echo you come to default .
goto end
:hellowrold
echo why you come to hello world ?
goto end
:end
createHelp.bat 此脚本可以输出系统命令的帮助文档,不过还有点问题,但可以运行了。
@echo off
set cmds=FIND SORT DISKPART
for /F "usebackq" %%i in (`help`) do (
for %%a in (%cmds%) do (
if not "%%a" == "%%i" (
help "%%i" > help/%%i-help.txt
)
)
)
2012-09-24 增加文件处理,以xml为例,增加字符串处理示例。
config.xml文件:
<config>
<host>www.google.com.kh</host>
<port>8080</port>
</config>
dealContent.bat
@echo off
rem 把config.xml里的<host>127.0.0.1</host>替换成<host>www.google.com.kh</host>
if exist config_tmp.xml del config_tmp.xml
rem 使用for循环命令读取文件内容时,先从文件里读取一行,然后用默认的分隔符对行进行划分,再用得到的每一项调用循环体
rem 所以要处理的文件的行最好不要有空格或tab
for /F %%i in (config.xml) do (
rem 如果项是xml的标签,要对<>转义
if %%i == ^<host^>127.0.0.1^</host^> (
rem >>前面是没有空格
echo ^<host^>www.google.com.kh^</host^>>> config_tmp.xml
) else (
echo %%i>> config_tmp.xml
)
)
del config.xml
ren config_tmp.xml config.xml
字符串处理示例:主要是字符串截取、替换,通过替换删除指定字符串:
dealStr.bat:
@echo off
rem 字符串处理
rem 字符串拼接,语法:newStr=%str1%%str2%
set str1=abc
set str2=123
set newStr=%str1%%str2%
echo %newStr%
rem 字符串截取,语法:%var:~x,y% (x,y∈Z)
rem 说明:当x为正数时表示从左到右第x+1位开始截取,当x为负数时表示从右到左第x位开始截取(右一位是-1),
rem 当省略x时采用默认值0;
rem 当y为正数时表示截取的长度,当y为负数时表示截取到从右到左的第y+1位,当省略y时采用默认值-1。
set src=abc 123 456
set trunk=%src:~2,4%
echo %trunk%
echo %src:~-5,4%
rem 字符串替换,语法:%var:str1=str2%
rem 说明:将字符串var中所有的str1替换为str2
echo %src:123=789%
rem 删除字符串里的空格
set str5=abc 123 4 5 6 7 8
echo %str5: =%
rem 删除字符串里的tab
echo %str5: =%
分享到:
相关推荐
DOS命令能够有效帮助我们进行批处理,掌握基本的DOS命令能够加速数据处理。这里有一些我在实际应用过程中,经常会用到的DOS命令,非常实用,希望能够帮助到大家。
在Windows批处理笔记中,我们可以学习到如何创建和使用批处理脚本来自动化日常任务。这篇博客文章可能是作者分享的一些关于批处理的实用技巧和经验。 `tomcatInstall.bat`文件名暗示这是一个用于安装Tomcat服务器的...
Window 批处理命令学习笔记 Window 批处理命令学习笔记是关于 Window 批处理命令的学习笔记,介绍了批处理文件的基本概念、内部命令、语法和使用方法。 一、批处理文件的基本概念 批处理文件是无格式的文本...
netsh(Network Shell)是一个windows系统本身提供的功能强大的网络配置命令行工具,可用来修改windows的ip,网关,dns,防火墙等信息. 1.netsh修改ip,网关,dns: (1)备份网络配置: netsh dump > 路径 ...
"笔记本网卡有线无线切换批处理"是一个为了解决这一问题而设计的自动化工具。它允许用户通过一个简单的批处理脚本来快速地在有线和无线网络连接之间切换,无需每次都手动进入设备管理器或网络设置进行调整。 在...
利用bat格式的文件建立笔记本的无线网络
本学习笔记将从批处理脚本的基本语法和高级特性两个方面详细讲解,涵盖了变量、输入输出、字符串操作、算术运算、程序流程控制、函数定义、扩展批处理功能以及批处理任务实战等多个知识点。 首先,cmd解释器是...
批处理(Batch Script)则是一种自动化执行一系列命令的方法,能够简化重复性的任务。本篇文章将深入探讨如何使用批处理在笔记本电脑上实现WiFi网络的配置、开启和关闭。 首先,我们需要理解Windows操作系统中的...
描述中提到的“解压后可以一键禁用笔记本电脑的键盘和一键启用笔记本电脑的键盘”,表明这个压缩包包含了两个批处理文件(.bat文件)——"启用自带键盘.bat"和"禁用自带键盘.bat"。批处理文件是包含一序列命令的文本...
这个是笔记本开启热点的批处理,有用得到的下吧 这个是笔记本开启热点的批处理
标题中的“笔记本作为无线热点批处理程序下载”指的是利用批处理脚本来实现笔记本电脑变身成一个无线热点,供其他设备通过Wi-Fi连接共享网络。在没有物理路由器或移动数据分享功能的情况下,这是一个实用的方法。 ...
笔记本共享wifi批处理,如果想用笔记本共享wifi,给其他笔记本或者移动终端,则可以双击此批处理文件。共享服务名,连接密码 可自行编辑批处理内容设置。简单方便。
SSID=需要广播的名称 key=密码,可随意修改
笔记本无线共享局域网批处理命令,可创建一个wifi热点,供手机、平板联网。
一个方便的笔记本变无线WIFI热点的批处理代码 ,右键以管理员的身份运行,就可以了 ,
Windows系统下通过bat批处理命令自动修改笔记本处理器高性能电源管理最大处理器状态,适合笔记本高性能状态下一键修改最大处理器状态,而不需要通过控制面板等方法打开,修改最大处理器状态实现关闭CPU自动睿频,...
windows7笔记本管理wifi批处理