batch file programming 学习

总概

batch file programming 文件的后缀名为 .bat ,可以直接在 windows 的命令行执行。

批处理常用的 Dos 命令

echo

输出信息

echo 你要输出的信息

暂停

pause

打开或关闭回显

echo on  打开显示
echo off 关闭显示

在命令行提示符中也可以关闭回显

这里输出 off 或者 on,而是对下面的命令决定是否打开或关闭回显

也可以采用下列方式对单条命令执行

@ 你要执行的命令

对上面两条语句前面也可以使用 @来消除回显。

输出空行

echo.

也就是回车,可以利用管道达到,前面命令的输出作为后面命令的输入,达到想要的效果,比如:echo. | time 就可以直接显示时间,而跳过时间设定。 再比如:echo Y|rd /s c:\abc 可以输入 Y 确认删除有内容的文件夹。

. 可以用 ,:;”/]+\ 中的任意符号替代

添加新文件

echo 文件内容 > 文件名

覆盖写文件,文件不存在就创建。

rem

rem 注释内容

在执行时不会显示。 其实 :::也可以表示注释,但需要注意两点:

第一, 任何以冒号:开头的字符行,在批处理中都被视作标号, 而直接忽略其后的所有内容。 有效标号:冒号后紧跟一个以字母数字开头的字符串,goto 语句可以识别。 无效标号:冒号后紧跟一个非字母数字的一个特殊符号,goto 无法识别的标号,可以起到注释作用,所以 :: 常被用作注释符号,其实 : 也可起注释作用。

第二, 与 rem 不同的是, :: 后的字符行在执行时不会回显, 无论是否用echo on 打开命令行回显状态, 因为命令解释器不认为他是一个有效的命令行, 就此点来看, rem 在某些场合下将比 :: 更为适用; 另外, rem 可以用于 config.sys 文件中。

cd

同一分区目录切换

cd [盘符][路径]

不同盘符目录切换

cd /d [盘符][路径]

或切换到另一盘符根目录,需要注意的是 根目录命令为 cd /d [盘符]:\

盘符:

需要注意的是,盘符需要和现在的盘符是不同盘符,即这个命令无法用来切换到同一盘符的根目录

值为当前目录的常量

%cd%

dir

列文件名,命令较多,只记忆常用的。

显示目录中的文件和子目录列表。 DIR [drive:] [path] [filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N] [/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

[drive:] [path] [filename] 指定要列出的驱动器、目录和/或文件。

/A 显示具有指定属性的文件。 attributes D 目录 R 只读文件 H 隐藏文件 A 准备存档的文件 S 系统文件 - 表示“否”的前缀 /B 使用空格式(没有标题信息或摘要)。 /C 在文件大小中显示千位数分隔符。这是默认值。用 /-C 来 停用分隔符显示。 /D 跟宽式相同,但文件是按栏分类列出的。 /L 用小写。 /N 新的长列表格式,其中文件名在最右边。 /O 用分类顺序列出文件。 sortorder N 按名称(字母顺序) S 按大小(从小到大) E 按扩展名(字母顺序) D 按日期/时间(从先到后) G 组目录优先 - 颠倒顺序的前缀 /P 在每个信息屏幕后暂停。 /Q 显示文件所有者。 /S 显示指定目录和所有子目录中的文件。 /T 控制显示或用来分类的时间字符域。 timefield C 创建时间 A 上次访问时间 W 上次写入的时间 /W 用宽列表格式。 /X 显示为非 8dot3 文件名产生的短名称。格式是 /N 的格式, 短名称插在长名称前面。如果没有短名称,在其位置则 显示空白。 /4 用四位数字显示年

attrib

显示或更改文件属性 attrib [+R|-R] [+A|-A] [+S|-S] [+H|-H] [[dirve:] [path] filename] [/S] [/D]

+ 添加属性 - 清除属性。 R 只读文件属性。 A 存档文件属性。 S 系统文件属性。 H 隐藏文件属性。 [drive:] [path] filename 指定要处理的文件属性。 /S 处理当前文件夹及其子文件夹中的匹配文件。 /D 也处理文件夹

查看文件属性

attrib  [drive:] [path] filename  

为文件增添隐藏属性

attrib +h [drive:] [path] filename  

批量为文件路径下所有bat文件添加隐藏属性

attrib +h [drive:] [path] *.bat  /s

将某一文件夹及其目录下同名的子文件夹同时添加隐藏属性

attrib +h d:\123 /s /d

/d 必须和 /s 一起使用。

del

删除一个或数个文件。 DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

names 指定一个或数个文件或目录列表。通配符可被用来 删除多个文件。如果指定了一个目录,目录中的所 有文件都会被删除。

/P 删除每一个文件之前提示确认。 /F 强制删除只读文件。 /S 从所有子目录删除指定文件。 /Q 安静模式。删除全局通配符时,不要求确认。 /A 根据属性选择要删除的文件。 attributes R 只读文件 S 系统文件 H 隐藏文件 A 存档文件

copy

只能复制文件,不能复制文件夹

copy source[drive:][path][filename] [destination [drive:][path][filename]]

复制一个文件到指定目录

copy c:\test.txt d:\

复制一个文件到指定目录,同时该格式

copy c:\test.txt d:\abc.bat

不好理解)将一个目录下的所有文件拷贝到当前目录

copy c:\123

批量复制时是否覆盖的选项

copy c:\123\*.rm d:\abc /y

将c:\123 目录中所有rm格式的文件复制到d:\abc目录中,当目标目录中已经存在了和源目录中即将复制的文件相同文件名的文件时,就会出现如“改写x:\xx吗?(Yes/No/All):”这样的提示,让你选择是覆盖、不覆盖还是全部覆盖,通过参数/y(复制单个文件或批量复制时皆可使用),可以实现重名文件无须确认直接覆盖。

用 copy 合并文件

copy /b 文件1 文件2 ... 文件n  合并后的文件名
copy /b 文件1 文件2 ... 文件n

缺省情况下合并后文件名为 文件1

/b 是合并二进制文件,也可以合并文本文件; /a (代表 ASCII)仅用于合并文本文件。

xcopy

常见选项: /S 复制目录和子目录,不包括空目录。 /E 复制目录和子目录,包括空目录。

(其他选项 help xcopy

xcopy [选项] 源目录 目的目录

选项用斜杠 / ,路径用反斜杠 \。

目的目录中需要新创建的要用 \ 结尾,否则计算机会询问 文件 or 目录

md

创建文件夹

md [drive:]path

包含 空格特殊字符 的路径需要用双引号括起来

md path1 path2 path3

创建多个目录

md "C:\hello world\^*()"

双引号括起来的路径

对于创建多级空目录

md path\new1\new2\new3...

rd

删除一个目录

rd 目录

只能删除空目录

rd /s 目录

删除目录树(包括目录树下文件),但是会询问

rd /s /q 目录

安静模式,删除目录树,不询问。

ren

ren [drive:] [path] filename1 filename2.

请注意,你不能为目标文件指定新的驱动器或路径。

ren d:\123.txt 456.bat

改一个文件名

ren *.txt *.bat

批量改文件格式

move

★MOVE命令可以跨分区移动文件,却不可以跨分区移动文件夹。 ★对于跨分区移动文件时,如果目标位置存在和将要移动的文件同名时,系统会提示:“文件存在” 最后,命令将不会执行。 ★对于隐藏或系统属性的文件,只有把它们的属性去除后,move命令才会执行。

move 源文件或文件夹 目的文件或文件夹

如果目的源文件夹存在,就是移动;不存在就是重命名;

如果目的源文件存在,就是覆盖(重命名);不存在就是移动。

find

/V 显示所有未包含指定字符串的行。 /C 仅显示包含字符串的行数。 /N 显示行号。 /I 搜索字符串时忽略大小写。

find "abc" d:\abc.txt

在abc.txt中查找字符串abc的行。

findstr

略,help findstr 进行查看

常用的网络命令

ping

测试 IP 连接

ping [-n 发送数据包的次数]  IP或域名或host文件中对用的主机名

ipconfig

查看 IP 配置,

ipconfig [/a]

/a 选项:显示所有适配器的完整 TCP/IP 配置信息

arp

略,help arp 查看

start

启动一个单独的窗口以运行指定的程序或命令。

start "title" filename

其中,title 可以省略,finename 中有特殊字符需要 ""

start http://www.baidu.com
start "" "%windir%\system32\NOTEPAD.EXE" "%userprofile%\桌面\abc.txt"

shutdown

关闭或重启计算机

shutdown -l

注销本机用户,不能注销远程用户

schtasks /create /tn "关机" /tr "shutdown /s" /sc once /st 23:55

通过任务计划程序,定时关闭计算机

shutdown -r -t 60

60s 后重启计算机,没有时间参数时默认30s重启。

shutdown -a 

放弃系统关机进程

-f参数能够强制计算机关机

taskkill

Taskkill命令可以根据进程 ID 或图像名来结束一个或多个任务或进程。

taskkill /pid 1230 /pid 1241 /pid 1250

杀死指定进程号的三个进程

taskking /im qq.exe

根据图像明来杀死进程

/f强制执行参数

常用的特殊符号

重定向符

> 意思是传递并且覆盖,它所起的作用是将运行的结果传递到后面的范围

>> 意思是 将命令的输出结果追加到其后面的设备中去

命令管道符

把在它之前的命令或语句的执行结果 作为 在它之后的命令或语句的处理对象.

组合命令

& 与:顺序执行所有命令

命令1 & 命令2 ....

&& 短路与:顺序执行所有命令,直到有命令执行错误

命令1 && 命令2

|| 或:顺序执行所有命令,直到有命令执行正确

命令1 || 命令2

转义字符

用于输出特殊字符

echo ^|

输出管道字符

用于续行

@echo 这里^
其实只会^
输出一行

因为行末有个看不见的字符回车,将其转义就失效了。

变量引导符

百分号成对出现,并且其间包含非特殊字符时,一般做变量引用

见界定符一栏

形式参数的引用,此时,单个百分号后面紧跟0~9这10个数字。

%0 表示批处理文件本身,包括完整的路径和扩展名 %1至%9 表示第一个参数至第九个参数

@echo off
echo %0
echo %1
echo %2

在命令行中执行 脚本名[.bat] 参数1 参数2 这个程序就可以输出你的参数。

这里提供了一个读取外部参数的机制

转义符号

echo %%

输出一个 %,在命令行提示符中不需要转义,在 bat 文件中需要。

取模运算

set /a num=4%%3

命令行提示符中不需要转义,在 bat 文件中需要。

(PS 如果不使用 /a 参数,引用 num将会是 4%3 而不是 1

界定符

"" 对于有空格或者特殊符号的 常常需要界定符

@echo off
set "var=abc 123"
echo %var%
pause

输出 abc 123

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务