admin 管理员组

文章数量: 887021

  在上篇“windows bat 批处理脚本编写指南”博文中,比较系统地介绍了如何编写windows bat 批处理脚本,本文将介绍bat脚本中常用命令及部分DOS内外部命令使用方法,基本思路如下:

  • 将命令分成bat脚本使用的常见命令(如:set、echo等)和dos内外部命令(如:dir、copy等)
  • dos内外部命令按功能进行分类,比如:操作目录、文件的,字符串查找的,网络相关的等
一、DOS命令基本知识
1、如何查看命令使用说明

了解dos命令最简单、高效的办法就是查看其使用说明,所有dos命令几乎有统一的查看命令使用说明方法:命令 /?
比如 dir 查看目录及文件命令,cmd 命令框输入:dir /? 即可查看其使用说明,输出如下:

E:\download>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]
              指定要列出的驱动器、目录和/或文件。

...

可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)
来替代预先设定的开关。例如,/-W。
2、命令组合
  • cmd1 & cmd2 & cmd3,顺序执行cmd1、cmd2、cmd3,不管前个命令执行是否出错
  • cmd1 && cmd2 && cmd3,顺序执行cmd1、cmd2、cmd3,cmd1执行出错则cmd2不会继续执行
  • cmd1 || cmd2,cmd1执行失败才会执行cmd2
3、屏蔽命令输出

比如 copy 成功后会提示 “已复制 1 个文件。”,有时我们需要屏蔽copy成功的消息提示输出怎么办? > NUL

rem vcopy.bat
@echo off 
copy "%0" "%0"2
copy "%0" "%0"3 > NUL
4、windows常见命令列表

可以用help命令查看常见命令列表,如下:

D:\zx_resource>help

ASSOC          显示或修改文件扩展名关联。
ATTRIB         显示或更改文件属性。
BREAK          设置或清除扩展式 CTRL+C 检查。
BCDEDIT        设置启动数据库中的属性以控制启动加载。
CACLS          显示或修改文件的访问控制列表(ACL)。
CALL           从另一个批处理程序调用这一个。
CD             显示当前目录的名称或将其更改。
CHCP           显示或设置活动代码页数。
CHDIR          显示当前目录的名称或将其更改。
CHKDSK         检查磁盘并显示状态报告。
CHKNTFS        显示或修改启动时间磁盘检查。
CLS            清除屏幕。
CMD            打开另一个 Windows 命令解释程序窗口。
COLOR          设置默认控制台前景和背景颜色。
COMP           比较两个或两套文件的内容。
COMPACT        显示或更改 NTFS 分区上文件的压缩。
CONVERT        将 FAT 卷转换成 NTFS。您不能转换
               当前驱动器。
COPY           将至少一个文件复制到另一个位置。
DATE           显示或设置日期。
DEL            删除至少一个文件。
DIR            显示一个目录中的文件和子目录。
DISKCOMP       比较两个软盘的内容。
DISKCOPY       将一个软盘的内容复制到另一个软盘。
DISKPART       显示或配置磁盘分区属性。
DOSKEY         编辑命令行、调用 Windows 命令并创建宏。
DRIVERQUERY    显示当前设备驱动程序状态和属性。
ECHO           显示消息,或将命令回显打开或关上。
ENDLOCAL       结束批文件中环境更改的本地化。
ERASE          删除一个或多个文件。
EXIT           退出 CMD.EXE 程序(命令解释程序)。
FC             比较两个文件或两个文件集并显示它们之间的不同。
FIND           在一个或多个文件中搜索一个文本字符串。
FINDSTR        在多个文件中搜索字符串。
FOR            为一套文件中的每个文件运行一个指定的命令。
FORMAT         格式化磁盘,以便跟 Windows 使用。
FSUTIL         显示或配置文件系统的属性。
FTYPE          显示或修改用在文件扩展名关联的文件类型。
GOTO           将 Windows 命令解释程序指向批处理程序
               中某个带标签的行。
GPRESULT       显示机器或用户的组策略信息。
GRAFTABL       启用 Windows 在图形模式显示扩展字符集。
HELP           提供 Windows 命令的帮助信息。
ICACLS         显示、修改、备份或还原文件和
 目录的 ACL。
IF             在批处理程序中执行有条件的处理过程。
LABEL          创建、更改或删除磁盘的卷标。
MD             创建一个目录。
MKDIR          创建一个目录。
MKLINK         创建符号链接和硬链接
MODE           配置系统设备。
MORE           逐屏显示输出。
MOVE           将一个或多个文件从一个目录移动到另一个目录。
OPENFILES      显示远程用户为了文件共享而打开的文件。
PATH           为可执行文件显示或设置搜索路径。
PAUSE          停止批处理文件的处理并显示信息。
POPD           还原由 PUSHD 保存的当前目录上一次的值。
PRINT          打印一个文本文件。
PROMPT         改变 Windows 命令提示。
PUSHD          保存当前目录,然后对其进行更改。
RD             删除目录。
RECOVER        从损坏的磁盘中恢复可读取的信息。
REM            记录批处理文件或 CONFIG.SYS 中的注释。
REN            重新命名文件。
RENAME         重新命名文件。
REPLACE        替换文件。
RMDIR          删除目录。
ROBOCOPY       复制文件和目录树的高级实用程序
SET            显示、设置或删除 Windows 环境变量。
SETLOCAL       开始用批文件改变环境的本地化。
SC             显示或配置服务(后台处理)。
SCHTASKS       安排命令和程序在一部计算机上按计划运行。
SHIFT          调整批处理文件中可替换参数的位置。
SHUTDOWN       让机器在本地或远程正确关闭。
SORT           将输入排序。
START          打开单独视窗运行指定程序或命令。
SUBST          将驱动器号与路径关联。
SYSTEMINFO     显示机器的具体的属性和配置。
TASKLIST       显示包括服务的所有当前运行的任务。
TASKKILL       终止正在运行的进程或应用程序。
TIME           显示或设置系统时间。
TITLE          设置 CMD.EXE 会话的窗口标题。
TREE           以图形显示启动器或路径的目录结构。
TYPE           显示文本文件的内容。
VER            显示 Windows 的版本。
VERIFY         告诉 Windows 验证文件是否正确写入磁盘。
VOL            显示磁盘卷标和序列号。
XCOPY          复制文件和目录树。
WMIC           在交互命令外壳里显示 WMI 信息。
二、Bat脚本文件中经常使用的命令

下述命令使用说明及案例,大部分都可以在上篇博文中找到,这儿只是简单列举:

  1. Echo,输出或回显,如:echo Hello World!
  2. cls,清屏
  3. set,获取所有变量,变量设置
  4. Setlocal、Endlocal,设置为local变量,结束局部变量,v=Local Var2由于在endlocal后赋值的变量,其不再是local变量而是全局变量
@echo off
setlocal
set v=Local Variable
echo v=%v%
endlocal
set v=Local Var2
echo v=%v%
  1. For,for 循环
  2. if … else …,条件选择
  3. title、color,设置标题和颜色
  4. Call,调用另外一个bat脚本,demo如下:
rem vmain.bat
@echo off 
call vsub.bat aa bb

rem vsub.bat
@echo off 
echo %0 %1 %2
D:\cmdtest\lianxi>vmain aa bb
vsub.bat aa bb
  1. Shift,参数前移,比如:shift,则第二个参数替换第一个参数,依次类推
rem vshift.bat
@echo off 
echo before shift, args: %*, arg1=%1
shift
echo after shift, args: %*, arg1=%1
D:\cmdtest\lianxi>vshift aa bb cc
before shift, args: aa bb cc, arg1=aa
after shift, args: aa bb cc, arg1=bb
  1. choice:从选择列表选择一个项目并返回所选项目的索引
@echo off & setlocal

rem /c按键列表 /m提示内容 /d默认选择 /t等待秒数 /d 必须和 /t同时出现
rem 5秒不输入,默认c
choice  /c abcd /m "请输入" /d c /t 5

rem 用户选择的结果会按项目序号数字(从1开始)返回在errorlevel变量中
if %errorlevel%==1 echo 你选择了a
if %errorlevel%==2 echo 你选择了b
if %errorlevel%==3 echo 你选择了c
if %errorlevel%==4 echo 你选择了d
  1. Rem、::,都是注释
  2. Pause,程序暂停,按任意键继续
  3. GOTO,跳转语句
  4. exit,程序退出,如:exit /b 0
三、DOS常见内外部命令
1. 字符串查找相关

1). find
使用说明:

在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

  /V         显示所有未包含指定字符串的行。
  /C         仅显示包含字符串的行数。
  /N         显示行号。
  /I         搜索字符串时忽略大小写。
  /OFF[LINE] 不要跳过具有脱机属性集的文件。
  "string" 指定要搜索的文本字符串。
  [drive:][path]filename
             指定要搜索的文件。
如果没有指定路径,FIND 将搜索在提示符处键入
的文本或者由另一命令产生的文本。

案例:
vfind_data.txt

Hello, Marcus!
hello, marcus!
Please say hello

rem vfind.bat
@echo off & setlocal
rem vfind_data.txt中查找包含Hello字符串的行,区分大小写
find "Hello" vfind_data.txt

rem vfind_data.txt中查找包含Hello字符串的行,不区分大小写
find /i "hello" vfind_data.txt

rem vfind_data.txt中查找不包含please字符串的行,不区分大小写
find /v /i "please" vfind_data.txt

rem 字符串作为输入,查找该字符串中是否包含“hello”
echo Hello, marcus! | find /i "hello"

2). findstr,find命令加强版(除 /C 只显示匹配到的行数,其它都可实现),支持正则表达式
使用说明:

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         在一行的开始配对模式。
  /E         在一行的结尾配对模式。
  /L         按字使用搜索字符串。
  /R         将搜索字符串作为一般表达式使用。
  /S         在当前目录和所有子目录中搜索匹配文件。
  /I         指定搜索不分大小写。
  /X         打印完全匹配的行。
  /V         只打印不包含匹配的行。
  /N         在匹配的每行前打印行数。
  /M         如果文件含有匹配项,只打印其文件名。
  /O         在每个匹配行前打印字符偏移量。
  /P         忽略有不可打印字符的文件。
  /OFF[LINE] 不跳过带有脱机属性集的文件。
  /A:attr    指定有十六进位数字的颜色属性。请见 "color /?"
  /F:file    从指定文件读文件列表 (/ 代表控制台)。
  /C:string  使用指定字符串作为文字搜索字符串。
  /G:file    从指定的文件获得搜索字符串。 (/ 代表控制台)。
  /D:dir     查找以分号为分隔符的目录列表
  strings    要查找的文字。
  [drive:][path]filename
             指定要查找的文件。

除非参数有 /C 前缀,请使用空格隔开搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello""there"'FINDSTR /C:"hello there" x.y' 文件 x.y  寻找
"hello there"。

一般表达式的快速参考:
  .        通配符: 任何字符
  *        重复: 以前字符或类出现零或零以上次数
  ^        行位置: 行的开始
  $        行位置: 行的终点
  [class]  字符类: 任何在字符集中的字符
  [^class] 补字符类: 任何不在字符集中的字符
  [x-y]    范围: 在指定范围内的任何字符
  \x       Escape: 元字符 x 的文字用法
  \<xyz    字位置: 字的开始
  xyz\>    字位置: 字的结束

有关 FINDSTR 常见表达法的详细情况,请见联机命令参考。

案例:

@echo off & setlocal
rem 查找文件vfind_data.txt中包含Hello字符串的行,区分大小写
findstr "Hello" vfind_data.txt

rem 查找hello开头的行,不区分大小写;数字比较请排除双引号、空格干扰
findstr /i "^hello" vfind_data.txt

rem 查找hello结尾的行,不区分大小写;数字比较请排除双引号、空格干扰
rem 文件最后一行若不是空白行,则最后一行hello$ 匹配不到,字符串查找时hello$也匹配不到
findstr /i "hello$" vfind_data.txt

echo Hello, marcus! | findstr /i "hello"

rem 找到输出found,没找到输出not found
echo Hello, marcus! | findstr /i "hello" > nul && (echo found) || (echo not found)

3). sort,排序
使用说明:

SORT [/R] [/+n] [/M kilobytes] [/L locale] [/REC recordbytes]
  [[drive1:][path1]filename1] [/T [drive2:][path2]]
  [/O [drive3:][path3]filename3]
  /+n                         指定开始每个比较的字符号码 n。/+3 说明每个
                              比较应从每行的第三个字符开始。少于 n 个字符
                              的行排在其他行之前。按默认值,从每行的第一
                              个字符开始比较。
  /L[OCALE] locale            用指定的区域设置替代系统默认区域设置。
                              ""C"" 区域设置产生最快的排序顺序并且是当前
                              的唯一其他选择。排序总是不分大小写的。
  /M[EMORY] kilobytes         指定用于排序的主内存量,单位为 KB。
                              最小内存量总是 160 KB。如果指定内存大小,
                              无论主内存的可用量是多少,指定的内存量会
                              全部用于排序。

                              要取得最佳性能,通常不指定内存大小。按默认
                              值,如果达到默认最大内存值,排序会一次完成
                              (非临时文件);否则,排序会分两次完成(没有
                              完全排序的数据存储在临时文件中);用于排序
                              和合并的内存量相等。如果输入和输出都是文
                              件,默认最大内存量为可用主内存的 90%;
                              否则,为主内存的 45%。
  /REC[ORD_MAXIMUM] characters 指定记录中的最大字符数量
                              (默认值为 4096,最大值为 65535)。
  /R[EVERSE]                  颠倒排序顺序,即,从 Z 到 A,再从 9 到 0。
  [drive1:][path1]filename1   指定要排序的文件。如果没有指定,则排序标准
                              输入。指定输入文件比将同一个文件重定向为标
                              准输入快。
  /T[EMPORARY]
    [drive2:][path2]          指定保留排序工作存储的目录路径,以防主内
                              存无法容纳数据。默认值是使用系统临时目录。
  /O[UTPUT]
    [drive3:][path3]filename3 指定在哪个文件中储存经过排序的输入。
                              如果没有指定,数据会被写入标准输出。指定
                              输出文件比将标准输出重定向到同一个文件快。在这里插入代码片

案例:

@echo off & setlocal
rem 默认排序,按a-z排序
sort vfind_data.txt

rem 倒序
sort /r vfind_data.txt

rem 按第二个字母排序
sort /+2 vfind_data.txt
2. 目录操作相关命令

1)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。

案例:

rem vdir.bat
@echo off & setlocal

rem 列出目录下所有bat文件的文件名
dir *.bat /b

rem 列出目录下所有bat文件的文件完整路径
dir *.bat /b/s

rem 列出所有子目录下文件数量、大小
dir /s d:\download

rem 列出当前目录下隐藏目录、文件
dir /ah

2)md,mkdir,创建目录
语法说明:

MKDIR [drive:]path
MD [drive:]path
md a 当前目录下创建a目录,若a目录已存在会报错
md /a/b/c  相当于创建了a目录,a目录下创建了b目录,b目录下创建了c目录

3)rd,rmdir,删除目录
语法说明:

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

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

    /Q      安静模式,带 /S 删除目录树时不要求确认
----------------------------------------------
rd a		a非空不能删除,下面有b/C
rd a /s		递归删除,Y/N 是否删除提示?
rd a /s /q	静默递归删除

3)pushd,popd,切换当前目录
每次使用 pushd 命令时,都存储一个目录供用户使用。目录按顺序储存到一个虚拟堆栈中。如果第一次使用 pushd 命令,该命令所在的目录就会被置于栈底。如果您再次使用该命令,则第二个目录就会被置于第一个目录之上。每次使用 pushd 命令时都将重复该过程。
可以用 popd 命令将当前目录更改为由 pushd 命令最新存储的目录。如果使用 popd 命令,位于堆栈顶端的目录将从堆栈中删除,当前目录转变为栈顶目录。如果再次使用 popd 命令,则删除堆栈中的下一个目录。

保存当前目录以供 POPD 命令使用,然后改到指定的目录。
PUSHD [path | ..]
  path        指定要成为当前目录的目录。

如果命令扩展被启用,除了一般驱动器号和路径,PUSHD命令还接受网络路径。如果指定了网络
路径,PUSHD 将创建一个指向指定网络资源的临时驱动器号,然后再用刚定义的驱动器号更改当
前的驱动器和目录。可以从 Z: 往下分配临时驱动器号,使用找到的第一个没有用过的驱动器号。
------------------------------------
更改到 PUSHD 命令存储的目录。
POPD
如果命令扩展被启用,从推目录堆栈 POPD 驱动器时,POPD命令会删除 PUSHD 创建的临时驱动
器号。

案例:

rem d:\cmdtest\lianxi\vdir.bat
rem 设置当前目录为脚本所在目录,即d:\cmdtest\lianxi
pushd %~dp0
dir

rem 设置当前目录为脚本所在目录下的data目录,即d:\cmdtest\lianxi\data
pushd "%~dp0data"
dir

rem 返回到d:\cmdtest\lianxi
popd
dir

rem 返回到当前目录
popd
dir

4)tree,显示目录结构
使用说明:

以图形显示驱动器或路径的文件夹结构。
TREE [drive:][path] [/F] [/A]

   /F   显示每个文件夹中文件的名称。
   /A   使用 ASCII 字符,而不使用扩展字符。
---------------------------
tree	显示当前目录,目录树
tree /F	显示当前目录,目录树,包括文件列表
3. 文件操作相关命令

1)>,>> 重定向创建文件
> 重新生成文件,>> 原文件已存在则添加内容,不然新建文件并写入内容
案例说明:

rem 字符串adfsaf输出到echo.txt
echo adfsaf > echo.txt

rem 目录树输出到tree.txt文件
tree > tree.txt

rem 创建一个空白文件
cd .> empty.txt

2)copy,xcopy 文件复制
copy只能复制文件,xcopy可以复制文件夹和文件

REM lianxi\data目录复制到 当前目录data下
xcopy lianxi\data .\data\

rem 复制成功提示信息输出到nul,不在stdout上显示
xcopy lianxi\data .\data\ > nul

3)del, ERASE 文件删除
del, ERASE 是SB命令,删除时没有任何提示,除非加/p参数,如:del /p file 才会yes/no确认,因此这两个是危害性很大的命令,需谨慎使用。

删除一个或数个文件。
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  重分析点
-------------------------------------
rem 删除file.txt
del file.txt

rem 删除file.txt,会有yes|no确认
del /p file.txt

rem 删除所有txt文件
del *.txt

4)type,more,文件内容查看

显示文本文件的内容。
TYPE [drive:][path]filename
----------------------------
type aa.txt
逐屏显示输出。
MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [drive:][path]filename
command-name | MORE [/E [/C] [/P] [/S] [/Tn] [+n]]
MORE /E [/C] [/P] [/S] [/Tn] [+n] [files]

    [drive:][path]filename  指定要逐屏显示的文件。
    command-name            指定要显示其输出的命令。

    /E      启用扩展功能
    /C      显示页面前先清除屏幕
    /P      扩展 FormFeed 字符
    /S      将多个空白行缩成一行
    /Tn     将制表符扩展为 n 个空格(默认值为 8)

            开关可以出现在 MORE 环境变量中。
    +n      从第 n 行开始显示第一个文件

    files   要显示的文件列表。使用空格分隔列表中的文件。
            如果已启用扩展功能,则在 -- More -- 提示处 接受下列命令:
    P n 显示下 n 行
    S n 跳过下 n 行
    F 显示下个文件
    Q 退出
    = 显示行号
    ? 显示帮助行
    <space> 显示下一页
    <ret> 显示下一行
-------------------------------
rem 分屏显示文件内容
more aa.txt

rem 从100行开始显示
more +100 aa.txt

rem tree树形目录结果分屏显示
tree /f | more

5)ren,文件或目录重命名
ren 文件1 文件2
ren 目录1 目录2

6)comp,比较文件内容是否一致
使用说明:

比较两个文件或两个文件集的内容。
COMP [data1] [data2] [/D] [/A] [/L] [/N=number] [/C] [/OFF[LINE]]

  data1      指定要比较的第一个文件的位置和名称。
  data2      指定要比较的第二个文件的位置和名称。
  /D         以十进制格式显示差异。
  /A         以 ASCII 字符显示差异。
  /L         显示不同的行数。
  /N=number  只比较每个文件中第一个指定的行数。
  /C         比较文件时 ASCII 字母不区分大小写。
  /OFF[LINE] 不要跳过带有脱机属性集的文件。

要比较文件集,请在 data1 和 data2 参数中使用通配符。
---------------------------
comp file1.txt file2.txt

7)ATTRIB,显示或更改文件属性

显示或更改文件属性。
ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I]
       [drive:][path][filename] [/S [/D] [/L]]
  + 设置属性。
  - 清除属性。
  R 只读文件属性。
  A 存档文件属性。
  S 系统文件属性。
  H 隐藏文件属性。
  I 无内容索引文件属性。
  [drive:][path][filename]
      指定 attrib 要处理的文件。
  /S 处理当前文件夹及其所有子文件夹中的匹配文件。
  /D 也处理文件夹。
  /L 处理符号链接和符号链接目标的属性。
-------------------------------------------------
rem 查看当前目录下的文件属性
attrib

rem 隐藏文件夹data
attrib +s +h data

rem 取消隐藏文件夹
attrib -s -h data

8)assoc, ftype 文件关联
windows文件关联原理,比如readme.doc为例:
1)先查找.doc对应的文件类型,用assoc .doc 可以实现
2)再根据上一步得到的文件类型,找该类型对应的可执行文件,用ftype 文件类型可以实现

rem .doc=Word.Document.8
assoc .doc

rem Word.Document.8="C:\Program Files\Office2007\OFFICE12\WINWORD.EXE" "%1"
ftype Word.Document.8

比如*.txt文件默认word打开,我们可以文件关联设置为,.txt=Word.Document.8即可

rem 先查看.txt对应的文件类型,.txt=txtfile
assoc .txt

rem .txt对应的文件类型设置为word文档,设置后txt默认用word打开
assoc .txt=Word.Document.8

rem .txt对应的文件类型重新设置为txtfile,即默认用记事本打开
assoc .txt=txtfile
5、网络操作相关命令

1)ipconfig,IP查看
使用说明:

用法:
    ipconfig [/allcompartments] [/? | /all |
                                 /renew [adapter] | /release [adapter] |
                                 /renew6 [adapter] | /release6 [adapter] |
                                 /flushdns | /displaydns | /registerdns |
                                 /showclassid adapter |
                                 /setclassid adapter [classid] |
                                 /showclassid6 adapter |
                                 /setclassid6 adapter [classid] ]

其中
    adapter             连接名称 (允许使用通配符 * 和 ?,参见示例)
    选项:
       /?               显示此帮助消息
       /all             显示完整配置信息。
       /release         释放指定适配器的 IPv4 地址。
       /release6        释放指定适配器的 IPv6 地址。
       /renew           更新指定适配器的 IPv4 地址。
       /renew6          更新指定适配器的 IPv6 地址。
       /flushdns        清除 DNS 解析程序缓存。
       /registerdns     刷新所有 DHCP 租约并重新注册 DNS 名称
       /displaydns      显示 DNS 解析程序缓存的内容。
       /showclassid     显示适配器的所有允许的 DHCP 类 ID。
       /setclassid      修改 DHCP 类 ID。
       /showclassid6    显示适配器允许的所有 IPv6 DHCP 类 ID。
       /setclassid6     修改 IPv6 DHCP 类 ID。

默认情况下,仅显示绑定到 TCP/IP 的适配器的 IP 地址、子网掩码和默认网关。
对于 Release 和 Renew,如果未指定适配器名称,则会释放或更新所有绑定
到 TCP/IP 的适配器的 IP 地址租约。

对于 Setclassid 和 Setclassid6,如果未指定 ClassId,则会删除 ClassId。
示例:
    > ipconfig                       ... 显示信息
    > ipconfig /all                  ... 显示详细信息
    > ipconfig /renew                ... 更新所有适配器
    > ipconfig /renew EL*            ... 更新所有名称以 EL 开头的连接
    > ipconfig /release *Con*        ... 释放所有匹配的连接,
                                         例如 "Local Area Connection 1""Local Area Connection 2"
    > ipconfig /allcompartments      ... 显示有关所有分段的信息
    > ipconfig /allcompartments /all ... 显示有关所有分段的详细信息
--------------------------------------------
最常用的莫过于:
ipconfig		查看IP地址
ipconfig /all	查看IP地址,MAC地址

2)ping,测试IP网络可达性、网络响应速度

rem baidu是否可访问,网速测试
ping www.baidu

rem 脚本执行等候5秒
ping /n 5 127.1>nul
6、系统操作相关命令

1)shutdown,关机、重启

60秒后自动关机:shutdown -s -t 60
取消自动关机:shutdown -a
立刻重启:shutdowm -r -t 0
60秒后自动休眠:shutdowm -h -t 60

2)explorer:调用资源管理器

rem 打开浏览器,并访问http://www.baidu
explorer "http://www.baidu"

rem 打开文件目录,定位到d:
explorer d:

3)start:打开文件夹,启动文件

rem 同explorer d:
start d:

开启一个cmd命令框
start cmd

4)ver:显示操作系统版本号

rem Microsoft Windows [版本 6.1.7601]
ver

5)hostname:显示计算机名称

rem PC-20190618KZQB
hostname

6)net user:用户列表

更多其它命令,比如:format, fdisk, chkdisk等,大家可以参考https://www.jb51/shouce/dos/添加链接描述

本文标签: 批处理 命令 常见 Windows bat