bat文件浅析(二)

文件处理

1.创建目录

C:\Users\ASUS>help mkdir
创建目录。

MKDIR [drive:]path
MD [drive:]path

如果命令扩展被启用,MKDIR 会如下改变:

如果需要,MKDIR 会在路径中创建中级目录。例如: 假设 \a 不
存在,那么:

    mkdir \a\b\c\d

与:

    mkdir \a
    chdir \a
    mkdir b
    chdir b
    mkdir c
    chdir c
    mkdir d

相同。如果扩展被停用,则需要键入 mkdir \a\b\c\d。


路径有空格时,可以用双引号括起来,也可以用   替代

例如执行下面命令:

C:\Users\ASUS>md E:\csdn\testdir\xxxxx

结果会在E:\csdn\testdir目录下创建xxxxx目录

2.查看

1)进入e盘

C:\Users\ASUS>e:

E:\>

2)进入E:\csdn\testdir\xxxxx目录

E:\>cd E:\csdn\testdir\xxxxx

E:\csdn\testdir\xxxxx>

3)进入E:\csdn\testdir\xxxxx目录的上一级目录

E:\csdn\testdir\xxxxx>cd ..

E:\csdn\testdir>

3)查看E:\csdn\testdir\目录

首先看一下查看命令dir

C:\Users\ASUS>help dir
显示目录中的文件和子目录列表。

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

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

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

可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)
来替代预先设定的开关。例如,/-W。

使用dir查看目录信息:

E:\csdn\testdir>dir
 驱动器 E 中的卷是 文档
 卷的序列号是 0003-04D5

 E:\csdn\testdir 的目录

2014/02/16  10:15    <DIR>          .
2014/02/16  10:15    <DIR>          ..
2014/02/16  10:14                 0 aaa.txt
2014/02/16  10:15                 0 bbb.txt
2014/02/16  10:07                 0 ccc.txt
2014/02/16  10:07    <DIR>          xxxxx
               3 个文件              0 字节
               3 个目录 89,838,518,272 可用字节

在其他目录下也可以:

C:\Users\ASUS>dir E:\csdn\testdir\
 驱动器 E 中的卷是 文档
 卷的序列号是 0003-04D5

 E:\csdn\testdir 的目录

2014/02/16  10:15    <DIR>          .
2014/02/16  10:15    <DIR>          ..
2014/02/16  10:14                 0 aaa.txt
2014/02/16  10:15                 0 bbb.txt
2014/02/16  10:07                 0 ccc.txt
2014/02/16  10:07    <DIR>          xxxxx
               3 个文件              0 字节
               3 个目录 89,838,518,272 可用字节

3.删除


    1) 删除一个文件或多个文件

C:\Users\ASUS>help del
删除一个或数个文件。

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

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

  /P            删除每一个文件之前提示确认。
  /F            强制删除只读文件。
  /S            删除所有子目录中的指定的文件。
  /Q            安静模式。删除全局通配符时,不要求确认
  /A            根据属性选择要删除的文件
  属性          R  只读文件                     S  系统文件
                H  隐藏文件                     A  存档文件
                I  无内容索引文件               L  重分析点
                -  表示“否”的前缀

如果命令扩展被启用,DEL 和 ERASE 更改如下:

/S 开关的显示句法会颠倒,即只显示已经
删除的文件,而不显示找不到的文件。

       例子1:

C:\Users\ASUS>del /p E:\csdn\testdir\aaa.txt
E:\csdn\testdir\aaa.txt,要删除(Y/N)吗?

       输入y时就会删除aaa.txt文件。

       例子2:

C:\Users\ASUS>del /p E:\csdn\testdir\*
E:\csdn\testdir\bbb.txt,要删除(Y/N)吗? y
E:\csdn\testdir\ccc.txt,要删除(Y/N)吗? y

       将直接删除 本目录的 testdir 目录的所有文件,如果没有/p就没有任务提示
       删除文件的时候可以使用“*”作通配符
    2) 删除一个空目录

C:\Users\ASUS>help rd
删除一个目录。

RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path

    /S      除目录本身外,还将删除指定目录下的所有子目录和
            文件。用于删除目录树。

    /Q      安静模式,带 /S 删除目录树时不要求确认

       rd /q /s  d:\test\log
       将直接删除d:\test\log目录,如果log目录里面有文件将无法删除
    3) 删除一个非空目录 (必须指定目录名称)

C:\Users\ASUS>help rmdir
删除一个目录。

RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path

    /S      除目录本身外,还将删除指定目录下的所有子目录和
            文件。用于删除目录树。

    /Q      安静模式,带 /S 删除目录树时不要求确认

        rmdir /q /s d:\test\logs
       必须指定目录名称,不能使用通配符

标号“:”

任何以冒号:开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容。

有效标号:冒号后紧跟一个以字母数字开头的字符串,goto 语句可以识别。  因此“”


无效标号"::"

冒号后紧跟一个非字母数字的一个特殊符号,goto 无法识别的标号,可以起到注释作用,所以 ::常被用作注释符号,其实 :+ 也可起注释作用。

上一篇博文中rem是一条命令,在运行的时候相当于把rem本身及其后面的内容置空。既然它是一条命令,就必须处于单独的一行或者有类似“&”的连接符号连接。

C:\Users\Administrator>echo hello & rem world
hello

C:\Users\Administrator>echo hello rem world
hello rem world

“::”与rem 不同的是, ::后的字符行在执行时不会回显, 无论是否用echo on 打开命令行回显状态。例如test2_0.cmd

::双冒号注释
rem R_E_M注释
echo hello world

@echo off
::双冒号注释
rem R_E_M注释
echo hello world 2

pause
运行结果:

C:\Users\Administrator\Desktop>rem R_E_M注释

C:\Users\Administrator\Desktop>echo hello world
hello world
hello world 2
请按任意键继续. . .


批处理变量引导符%

这个百分号严格来说是算不上命令的,它只是批处理中的参数而已。

1.引用变量用%var%

在下面的test2_1.cmd中用到了set命令(详细介绍在bat文件浅析(三)中),它创建了str变量并赋值为aa,为了使用str,例如打印它,可以用%来引用它:

echo %str%

2.调用程序外部参数用%1至%9

%0  %1  %2  %3  %4  %5  %6  %7  %8  %9  %*为命令行传递给批处理的参数
%0 批处理文件本身,包括完整的路径和扩展名
%1 第一个参数
%9 第九个参数
%* 从第一个参数开始的所有参数
参数%0具有特殊的功能,可以调用批处理自身,以达到批处理本身循环的目的,也可以复制文件自身等等。
例:最简单的复制文件自身的方法

copy %0 d:\wind.bat
下面的call命令和start命令都可以通过%传递参数。

3.双写%%i

只有在批处理里面才写 两个 %% 号表示变量,cmd中只用 一个 % 号。反正只要你在批处理文件里面用 for,变量就用 %%。为什么批处理中用两个 %%?其实是编译器编译的时候要屏蔽一个%
例如批处理中的写法:

for %%i in (1 2 3 4 5 ) do echo %%i
在cmd窗口中写法:
for %i in (1 2 3 4 5 ) do echo %i
for命令将会在 bat文件浅析(四)中详细介绍


Goto命令

C:\Users\ASUS>help goto
将 cmd.exe 定向到批处理程序中带标签的行。

GOTO label

  label   指定批处理程序中用作标签的文字字符串。

标签必须单独一行,并且以冒号打头。

如果命令扩展被启用,GOTO 会如下改变:

GOTO 命令现在接受目标标签 :EOF,这个标签将控制转移到当前
批脚本文件的结尾。不定义就退出批脚本文件,这是一个容易的
办法。有关能使该功能有用的 CALL 命令的扩展描述,请键入
CALL /?。

 如下test2_1.cmd

@echo off

set str=aa
::goto命令识别的标签
:label0
echo str=%str%

if "%str%"=="aa" (
 set str=hello world
 :: 跳转到label0标签:这里利用goto和标签,构成循环结构
 goto label0
)

pause
运行结果:

str=aa
str=hello world
请按任意键继续. . .


Call命令

C:\Users\ASUS>help call
从批处理程序调用另一个批处理程序。

CALL [drive:][path]filename [batch-parameters]

  batch-parameters   指定批处理程序所需的命令行信息。

如果命令扩展被启用,CALL 会如下改变:

CALL 命令现在将卷标当作 CALL 的目标接受。语法是:

    CALL:label arguments

一个新的批文件上下文由指定的参数所创建,控制在卷标被指定
后传递到语句。您必须通过达到批脚本文件末两次来 "exit" 两次。
第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次
会退出批脚本。键入 GOTO /?,参看 GOTO :EOF 扩展的描述,
此描述允许您从一个批脚本返回。

  参数: [Drive:][Path] FileName  指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。
  调用另一个批处理程序,并且不终止父批处理程序。如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令。
  call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。
  例子1:call="%cd%\test2.bat" haha kkk aaa    (调用指定目录下的 test2.bat,且输入3个参数给他)
  例子2:call test2.bat arg1 arg2    (调用同目录下的 test2.bat,且输入2个参数给他)
  注:可以调用自身(死循环、递归)

start命令

C:\Users\ASUS>help start
启动一个单独的窗口运行指定的程序或命令。

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/AFFINITY <hex affinity>] [/WAIT] [/B] [command/program]
      [parameters]

    "title"     在窗口标题栏中显示的标题。
    path        启动目录。
    B           启动应用程序,但不创建新窗口。应用程序已
                忽略 ^C 处理。除非应用程序启用 ^C 处理,否则 ^Break 是唯一可以中断
                该应用程序的方式。
    I           新的环境将是传递给 cmd.exe 的原始环境,而不是当前环境。
    MIN         以最小化方式启动窗口

 例子1:start /MIN test2.bat arg1 arg2    (调用同目录下的 test2.bat,且输入2个参数给他,且本窗口最小化)
 例子2:e:\"program files"\极品列车时刻表\jpskb.exe  (文件路径名有空格时)

 

call是阻塞的。 就是执行完CALL的命令结束后才执行下一句。例如打开个记事本,则必须等记事本关闭了才执行下一条命令。

start是非阻塞的。就是调用了这个命令后就立刻执行下一条命令而不等待他的结束。

 

其他常用命令


0. ipconfig命令

该命令查看一下类似物理地址、ip地址之类的配置信息

C:\Users\ASUS>ipconfig
Windows IP 配置

无线局域网适配器 无线网络连接 3:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 本地连接 3:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

隧道适配器 isatap.{D1496DCF-4DEA-49AF-B750-3244F072748C}:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

隧道适配器 6TO4 Adapter:

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 DNS 后缀 . . . . . . . :

下面是部分测试信息:

C:\Users\ASUS>ipconfig /all

Windows IP 配置

   主机名  . . . . . . . . . . . . . : ASUS-PC
   主 DNS 后缀 . . . . . . . . . . . :
   节点类型  . . . . . . . . . . . . : 混合
   IP 路由已启用 . . . . . . . . . . : 否
   WINS 代理已启用 . . . . . . . . . : 否

无线局域网适配器 无线网络连接 3:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Intel(R) Centrino(R) Wireless-N 100 #2
   物理地址. . . . . . . . . . . . . : 78-92-9C-95-29-EA
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::9c02:e44e:71e4:d5f7%16(首选)
   IPv4 地址 . . . . . . . . . . . . : 192.168.1.104(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   获得租约的时间  . . . . . . . . . : 2014年2月16日 7:49:49
   租约过期的时间  . . . . . . . . . : 2014年2月16日 12:49:53
   默认网关. . . . . . . . . . . . . : 192.168.1.1
   DHCP 服务器 . . . . . . . . . . . : 192.168.1.1
   DHCPv6 IAID . . . . . . . . . . . : 410555036
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-15-5C-FE-F2-48-5D-60-ED-11-48
   DNS 服务器  . . . . . . . . . . . : 114.114.114.114
                                       8.8.8.8
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

以太网适配器 本地连接 3:

1.dxdiag命令

查看电脑详细信息,执行本命令会弹出类似以下信息:


2. ping 命令

C:\Users\ASUS>ping /?

用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
           [-r count] [-s count] [[-j host-list] | [-k host-list]]
           [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name

选项:
    -t             Ping 指定的主机,直到停止。
                   若要查看统计信息并继续操作 - 请键入 Control-Break;
                   若要停止 - 请键入 Control-C。
    -a             将地址解析成主机名。
    -n count       要发送的回显请求数。
    -l size        发送缓冲区大小。
    -f             在数据包中设置“不分段”标志(仅适用于 IPv4)。
    -i TTL         生存时间。
    -v TOS         服务类型(仅适用于 IPv4。该设置已不赞成使用,且
                   对 IP 标头中的服务字段类型没有任何影响)。
    -r count       记录计数跃点的路由(仅适用于 IPv4)。
    -s count       计数跃点的时间戳(仅适用于 IPv4)。
    -j host-list   与主机列表一起的松散源路由(仅适用于 IPv4)。
    -k host-list   与主机列表一起的严格源路由(仅适用于 IPv4)。
    -w timeout     等待每次回复的超时时间(毫秒)。
    -R             同样使用路由标头测试反向路由(仅适用于 IPv6)。
    -S srcaddr     要使用的源地址。
    -4             强制使用 IPv4。
    -6             强制使用 IPv6。

例子:

C:\Users\ASUS>ping 192.168.0.1

正在 Ping 192.168.0.1 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。

192.168.0.1 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),

C:\Users\ASUS>ping www.baidu.com

正在 Ping www.a.shifen.com [115.239.210.26] 具有 32 字节的数据:
来自 115.239.210.26 的回复: 字节=32 时间=9ms TTL=55
来自 115.239.210.26 的回复: 字节=32 时间=10ms TTL=55
来自 115.239.210.26 的回复: 字节=32 时间=11ms TTL=55
来自 115.239.210.26 的回复: 字节=32 时间=9ms TTL=55

115.239.210.26 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 9ms,最长 = 11ms,平均 = 9ms


 

3. telnet 命令
   测试端口使用 telnet IP地址或主机名 端口,使用tcp协议的


4. random 命令
   产生随机数(正整数0~)


5. exit 命令
   结束程序。即时是被调用的程序,结束后也不会返回原程序

C:\Users\ASUS>exit /?
退出 CMD.EXE 程序(命令解释器)或当前批处理脚本。

EXIT [/B] [exitCode]

  /B          指定要退出当前批处理脚本而不是 CMD.EXE。如果从一个
              批处理脚本外执行,则会退出 CMD.EXE

  exitCode    指定一个数字号码。如果指定了 /B,将 ERRORLEVEL
              设成那个数字。如果退出 CMD.EXE,则用那个数字设置
              过程退出代码。

 

6. shutdown命令

C:\Users\ASUS>shutdown /?
用法: shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e] [/f]
    [/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]
    没有参数   显示帮助。这与键入 /? 是一样的。
    /?         显示帮助。这与不键入任何选项是一样的。
    /i         显示图形用户界面(GUI)。这必须是第一个选项。
    /l         注销。这不能与 /m 或 /d 选项一起使用。
    /s         关闭计算机。
    /r         关闭并重新启动计算机。
    /g         关闭并重新启动计算机。系统重新启动后,重新启动所有注册的应用程序。
    /a         中止系统关闭。这只能在超时期间使用。
    /p         关闭本地计算机,没有超时或警告。可以与 /d 和 /f 选项一起使用。
    /h         休眠本地计算机。 可以与 /f 选项一起使用。
    /e         记录计算机意外关闭的原因。
    /t xxx      设置关闭前的超时为 xxx 秒。有效范围是 0-315360000 (10 年),默认值为30。如果超时时间大于 0,则默示 /f参数。

 

7.color 命令

C:\Users\ASUS>color /?
设置默认的控制台前景和背景颜色。

COLOR [attr]

 attr 指定控制台输出的颜色属性

颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为
前景。每个数字可以为以下任何值之一:

    0 = 黑色       8 = 灰色
    1 = 蓝色       9 = 淡蓝色
    2 = 绿色       A = 淡绿色
    3 = 浅绿色     B = 淡浅绿色
    4 = 红色       C = 淡红色
    5 = 紫色       D = 淡紫色
    6 = 黄色       E = 淡黄色
    7 = 白色       F = 亮白色

如果没有给定任何参数,该命令会将颜色还原到 CMD.EXE 启动时
的颜色。这个值来自当前控制台窗口、/T 命令行开关或
DefaultColor 注册表值。

如果用相同的前景和背景颜色来执行 COLOR 命令,COLOR 命令
会将 ERRORLEVEL 设置为 1。

例如: "COLOR fc" 在亮白色上产生亮红色

 

8. 其他
  ver /?
  shift /?
  type /?
  find /?
  findstr /?

 cls

 

bat文件浅析
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值