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 处理符号链接和符号链接目标的属性。
示例:
attrib 列出当前目录所有文件属性
attrib /s /d 列出当前目录下所有文件及文件夹属性
attrib +h help.txt 给help.txt 文件添加隐藏属性
attrib -h help.txt 去掉help.txt文件隐藏属性
CALL 从另一个批处理程序调用这一个
CALL [drive:][path]filename [batch-parameters]
批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)
示例:
call mybat.bat argument1
批处理名 mybat.bat
参数 argument1
START 打开单独视窗运行指定程序或命令
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] [/AFFINITY ] [/WAIT] [/B] [command/program] [parameters]
示例:
start "mytitle" /d test mybat.bat 在新窗口下执行test目录下mybat.bat文件,新窗口的标题为"mytitle"
start /d test /b mybat.bat 在当前窗口下执行test目录下mybat.bat文件
CD 显示当前目录的名称或将其更改
CHDIR 显示当前目录的名称或将其更改
CHDIR [/D] [drive:][path]
CHDIR [..]
CD [/D] [drive:][path]
CD [..]
使用 /D 开关,除了改变驱动器的当前目录之外,还可改变当前驱动器。
示例:
cd 显示当前路径
cd "\winnt\profiles\username\programs\start menu" 切换到start menu目录
注意:当路径中文件夹名中有空格时,需要用引号包围
MD 创建一个目录
MKDIR 创建一个目录
MKDIR [drive:]path
MD [drive:]path
如果需要,MKDIR 会在路径中创建中级目录。例如: 假设 \a 不存在,那么:
mkdir \a\b\c\d
与:
mkdir \a
chdir \a
mkdir b
chdir b
mkdir c
chdir c
mkdir d
RD 删除目录
RMDIR 删除目录
RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
参数说明:
/S 除目录本身外,还将删除指定目录下的所有子目录和文件。用于删除目录树。
/Q 安静模式,带 /S 删除目录树时不要求确认
示例:
rd /s /q test 删除test整个目录
DEL 删除至少一个文件
ERASE 删除一个或多个文件。
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 开关的显示句法会颠倒,即只显示已经删除的文件,而不显示找不到的文件。
示例:
del mybat.bat 删除mybat.bat文件
del test 删除test目录下所有文件
del /f /q /s test 强制删除test及其子目录下所有文件
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 /a:d /b 列出当前目录下所有文件夹名
dir test 列出test目录下所有文件和文件夹
TREE 以图形显示启动器或路径的目录结构。
COPY 将至少一个文件复制到另一个位置
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B] [+ source [/A | /B] [+ ...]] [destination [/A | /B]]
参数说明:
source 指定要复制的文件。
/A 表示一个 ASCII 文本文件。
/B 表示一个二进位文件。
/D 允许解密要创建的目标文件
destination 为新文件指定目录和/或文件名。
/V 验证新文件写入是否正确。
/N 复制带有非 8dot3 名称的文件时,尽可能使用短文件名。
/Y 不使用确认是否要覆盖现有目标文件的提示。
/-Y 使用确认是否要覆盖现有目标文件的提示。
/Z 用可重新启动模式复制已联网的文件。
/L 如果源是符号链接,请将链接复制到目标而不是源链接指向的实际文件。
要附加文件,请为目标指定一个文件,为源指定数个文件(用通配符或 file1+file2+file3 格式)
示例:
copy help.txt d:\myhelp.txt 将当前目录下help.txt文件复制到d:\下,并将其更名为myhlep.txt
copy /Y help.txt d:\myhelp.txt 将当前目录下help.txt文件复制到d:\下,不提示直接覆盖
copy test1.txt + test3.txt + test2.txt d:\test.txt 将test1.txt,test3.txt,test2.txt合并后复制给d:\test.txt
XCOPY 复制文件和目录树
XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/EXCLUDE:file1[+file2][+file3]...]
参数说明:
source 指定要复制的文件。
destination 指定新文件的位置和/或名称。
/A 只复制有存档属性集的文件,但不改变属性。
/M 只复制有存档属性集的文件,并关闭存档属性。
/D:m-d-y 复制在指定日期或指定日期以后改变的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。
/EXCLUDE:file1[+file2][+file3]...
指定含有字符串的文件列表。每个字符串在文件中应位于单独的一行。
如果任何字符串与复制文件的绝对路径的任何部分相符,则不会复制该文件。
例如,指定如 \obj\ 或 .obj 的字符串会排除目录 obj 下面的
所有文件或带有 .obj 扩展名的所有文件。
/P 创建每个目标文件前提示您。
/S 复制目录和子目录,不包括空目录。
/E 复制目录和子目录,包括空目录。与 /S /E 相同。可以用来修改 /T。
/V 验证每个新文件的大小。
/W 提示您在复制前按键。
/C 即使有错误,也继续复制。
/I 如果目标不存在,且要复制一个以上的文件,则假定目标必须是目录。
/Q 复制时不显示文件名。
/F 复制时显示完整的源文件名和目标文件名。
/L 显示要复制的文件。
/G 允许将加密文件复制到不支持加密的目标。
/H 也复制隐藏和系统文件。
/R 覆盖只读文件。
/T 创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包括空的目录和子目录。
/U 只复制已经存在于目标中的文件。
/K 复制属性。一般的 Xcopy 会重设只读属性。
/N 用生成的短名复制。
/O 复制文件所有权和 ACL 信息。
/X 复制文件审核设置(隐含 /O)。
/Y 禁止提示以确认覆盖一个现存目标文件。
/-Y 要提示以确认覆盖一个现存目标文件。
/Z 在可重新启动模式下复制网络文件。
/B 复制符号链接本身和链接目标。
示例:
xcopy test d: /e 复制test目录下所有文件及文件夹到d盘
MOVE 将一个或多个文件从一个目录移动到另一个目录
要移动至少一个文件:
MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination
要重命名一个目录:
MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2
[drive:][path]filename1 指定您想移动的文件位置和名称。
destination 指定文件的新位置。目标可包含一个驱动器号和冒号、一个目录名或组合。如果只移动一个文件并在移动时将其重命名,您还可以包括文件名。
[drive:][path]dirname1 指定要重命名的目录。
dirname2 指定目录的新名称。
/Y 取消确认覆盖一个现有目标文件的提示。
/-Y 对确认覆盖一个现有目标文件发出提示。
REN 重新命名文件
RENAME 重新命名文件
RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.
请注意,您不能为目标文件指定新的驱动器或路径。
REPLACE 替换文件
DATE 显示或设置日期
DATE [/T | date]
说明:
显示当前日期设置和输入新日期的提示,请键入不带参数的 DATE。要保留现有日期,请按 ENTER。
如果命令扩展被启用,DATE 命令会支持 /T 开关;该开关指示命令只输出当前日期,但不提示输入新日期。
示例:
date /t 显示当前日期,不提示输入新日期
date
TIME 显示或设置系统时间
TIME [/T | time]
说明:
显示当前时间设置和输入新时间的提示,请键入不带参数的 TIME。要保留现有时间,请按 ENTER。
如果命令扩展被启用,TIME 命令会支持 /T 命令行开关;该命令行开关告诉命令只输出当前时间,但不提示输入新时间。
示例:
time /t 显示当前时间
FIND 在一个或多个文件中搜索一个文字字符串
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
参数说明:
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。
"string" 指定要搜索的文字串。
[drive:][path]filename 指定要搜索的文件。
如果没有指定路径,FIND 将搜索键入的或者由另一命令产生的文字。
示例:
find "FIND" help.txt 在help.txt 文件中查找"FIND"字符串,列出包含该串的行,区分大小写
FINDSTR 在多个文件中搜索字符串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/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\> 字位置: 字的结束
FOR 为一套文件中的每个文件运行一个指定的命令。
FOR %variable IN (set) DO command [command-parameters]
参数说明:
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.
示例:
@echo off
echo this is my bat file
for %%i in (test1.txt,test2.txt) do (
type %%i
echo.
)
以此输出test1.txt,test2.txt文件内容
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。
示例:
for /d %%i in (test/test*) do (
echo %%i
)
输出test目录下所有test开头的目录
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。
示例:
for /r test %%i in (*) do (
echo %%i
)
列出test目录下所有文件
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)。
示例:
for /l %%i in (1,1,5) do (
echo %%i
)
输出1,2,3,4,5
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]
filenameset 为一个或多个文件名。继续到 filenameset 中的下一个文件之前,每份文件都已被打开、读取并经过处理。处理包括读取文件,将其分成一行行的文字,然后将每行解析成零或更多的符号。然后用已找到的符号字符串变量值调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号。跳过空白行。您可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个或多个指定不同解析选项的关键字。这些关键字为:
eol=c - 指一个行注释字符的结尾(就一个)
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。
usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。
示例:
for /f "eol=; tokens=2,3* delims=, " %%i in (myfile.txt) do (
echo %%i %%j %%k
)
逐行解析myfile.txt,忽略;开头的行,用,和空格分隔每行得到tokens,然后将第二个token赋给%%i,第三个token赋给%%j,之后的所有字符给%%k
for /f "usebackq delims==" %%i IN (`set`) DO @echo %%i
输出所有环境变量名
for /f "delims==" %%i in ('dir /b') do @echo %%~ti
输出当前目录下所有文件及目录的日期和时间
IF 在批处理程序中执行有条件的处理过程
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
command后可跟else子句,ELSE 子句必须出现在同一行上的 IF 之后。例如:
IF EXIST filename. (
del filename.
) ELSE (
echo filename. missing.
)
如果命令扩展被启用,IF 会如下改变:
IF [/I] string1 compare-op string2 command
IF CMDEXTVERSION number command
IF DEFINED variable command
其中, compare-op 可以是:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
而 /I 开关(如果指定)说明要进行的字符串比较不分大小写。/I 开关可以用于 IF 的 string1==string2 的形式上。这些比较都是通用的;原因是,如果 string1 和 string2 都是由数字组成的,字符串会被转换成数字,进行数字比较。
CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它是在跟与命令扩展有关联的内部版本号比较。第一个版本是 1。每次对命令扩展有相当大的增强时,版本号会增加一个。命令扩展被停用时,CMDEXTVERSION 条件不是真的。
如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样,除了它取得一个环境变量,返回的结果是 true。
示例:
@echo off
echo this is my bat file
set var=1
if %var%==1 (
echo printvar1
) else (
echo printvar2
)
pause
CLS 清除屏幕
CMD 打开另一个 Windows 命令解释程序窗口
ECHO 显示消息,或将命令回显打开或关上。输入空行echo.
TYPE 显示文本文件的内容。
MORE 逐屏显示输出。
COLOR 设置默认控制台前景和背景颜色。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
GOTO 将 Windows 命令解释程序指向批处理程序中某个带标签的行。
PATH 为可执行文件显示或设置搜索路径。
PAUSE 停止批处理文件的处理并显示信息。
PROMPT 改变 Windows 命令提示。
REM 记录批处理文件或 CONFIG.SYS 中的注释。
SET 显示、设置或删除 Windows 环境变量
SET [variable=[string]]
参数说明:
variable 指定环境变量名。
string 指定要指派给变量的一系列字符串。
示例:
set 显示所有当前环境变量
set p 显示所有p开头的变量
SET /A expression
SET /P variable=[promptString]
参数说明:
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式评估器很简单并以递减的优先权顺序支持下列操作:
() - 分组
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<<>> - 逻辑移位
& - 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<=>>=
, - 表达式分隔符
如果您使用任何逻辑或取余操作符, 您需要将表达式字符串用引号扩起来。在表达式中的任何非数字字符串键作为环境变量名称,这些环境变量名称的值已在使用前转换成数字。如果指定
了一个环境变量名称,但未在当前环境中定义,那么值将被定为零。这使您可以使用环境变量值做计算而不用键入那些 % 符号来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,
那么它显示该表达式的最后值。该分配的操作符在分配的操作符左边需要一个环境变量名称。除十六进制有 0x 前缀,八进制有 0 前缀的,数字值为十进位数字。因此,0x12 与 18 和 022
相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,因为 8 和 9 不是有效的八进制位数。
示例:
set /a a=(1+3)*4 给a赋值16
set /a b=!4 给b赋值0
set /a c=1 "&" 1 给c赋值1
set /a d=12/3, e=12%3
/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。
示例:set /p aaa="please input an int var:"
set %PATH:str1=str2% 用str2退换PATH中str1
set %PATH:~10,5% 截取从第11个字符开始的5个字符
set %PATH:~-10% 截取最后10个字符
set %PATH:~0,-2% 取除了最后2个字符外的所有字符
几个动态环境变量:
%CD% - 扩展到当前目录字符串
%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期
%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值
%CMDEXTVERSION% - 扩展到当前命令处理器扩展版本号
%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行
SETLOCAL 开始用批文件改变环境的本地化。
ENDLOCAL 结束批文件中环境更改的本地化。
SCHTASKS 安排命令和程序在一部计算机上按计划运行。
SHIFT 调整批处理文件中可替换参数的位置。
SHUTDOWN 让机器在本地或远程正确关闭。
SORT 将输入排序。
TASKLIST 显示包括服务的所有当前运行的任务
示例:
tasklist /fi "status eq running" /fo table 按表格方式列出处于运行状态的进程
TASKKILL 终止正在运行的进程或应用程序
示例:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
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 处理符号链接和符号链接目标的属性。
示例:
attrib 列出当前目录所有文件属性
attrib /s /d 列出当前目录下所有文件及文件夹属性
attrib +h help.txt 给help.txt 文件添加隐藏属性
attrib -h help.txt 去掉help.txt文件隐藏属性
CALL 从另一个批处理程序调用这一个
CALL [drive:][path]filename [batch-parameters]
批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)
示例:
call mybat.bat argument1
批处理名 mybat.bat
参数 argument1
START 打开单独视窗运行指定程序或命令
START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] [/AFFINITY ] [/WAIT] [/B] [command/program] [parameters]
示例:
start "mytitle" /d test mybat.bat 在新窗口下执行test目录下mybat.bat文件,新窗口的标题为"mytitle"
start /d test /b mybat.bat 在当前窗口下执行test目录下mybat.bat文件
CD 显示当前目录的名称或将其更改
CHDIR 显示当前目录的名称或将其更改
CHDIR [/D] [drive:][path]
CHDIR [..]
CD [/D] [drive:][path]
CD [..]
使用 /D 开关,除了改变驱动器的当前目录之外,还可改变当前驱动器。
示例:
cd 显示当前路径
cd "\winnt\profiles\username\programs\start menu" 切换到start menu目录
注意:当路径中文件夹名中有空格时,需要用引号包围
MD 创建一个目录
MKDIR 创建一个目录
MKDIR [drive:]path
MD [drive:]path
如果需要,MKDIR 会在路径中创建中级目录。例如: 假设 \a 不存在,那么:
mkdir \a\b\c\d
与:
mkdir \a
chdir \a
mkdir b
chdir b
mkdir c
chdir c
mkdir d
RD 删除目录
RMDIR 删除目录
RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
参数说明:
/S 除目录本身外,还将删除指定目录下的所有子目录和文件。用于删除目录树。
/Q 安静模式,带 /S 删除目录树时不要求确认
示例:
rd /s /q test 删除test整个目录
DEL 删除至少一个文件
ERASE 删除一个或多个文件。
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 开关的显示句法会颠倒,即只显示已经删除的文件,而不显示找不到的文件。
示例:
del mybat.bat 删除mybat.bat文件
del test 删除test目录下所有文件
del /f /q /s test 强制删除test及其子目录下所有文件
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 /a:d /b 列出当前目录下所有文件夹名
dir test 列出test目录下所有文件和文件夹
TREE 以图形显示启动器或路径的目录结构。
COPY 将至少一个文件复制到另一个位置
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B] [+ source [/A | /B] [+ ...]] [destination [/A | /B]]
参数说明:
source 指定要复制的文件。
/A 表示一个 ASCII 文本文件。
/B 表示一个二进位文件。
/D 允许解密要创建的目标文件
destination 为新文件指定目录和/或文件名。
/V 验证新文件写入是否正确。
/N 复制带有非 8dot3 名称的文件时,尽可能使用短文件名。
/Y 不使用确认是否要覆盖现有目标文件的提示。
/-Y 使用确认是否要覆盖现有目标文件的提示。
/Z 用可重新启动模式复制已联网的文件。
/L 如果源是符号链接,请将链接复制到目标而不是源链接指向的实际文件。
要附加文件,请为目标指定一个文件,为源指定数个文件(用通配符或 file1+file2+file3 格式)
示例:
copy help.txt d:\myhelp.txt 将当前目录下help.txt文件复制到d:\下,并将其更名为myhlep.txt
copy /Y help.txt d:\myhelp.txt 将当前目录下help.txt文件复制到d:\下,不提示直接覆盖
copy test1.txt + test3.txt + test2.txt d:\test.txt 将test1.txt,test3.txt,test2.txt合并后复制给d:\test.txt
XCOPY 复制文件和目录树
XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/EXCLUDE:file1[+file2][+file3]...]
参数说明:
source 指定要复制的文件。
destination 指定新文件的位置和/或名称。
/A 只复制有存档属性集的文件,但不改变属性。
/M 只复制有存档属性集的文件,并关闭存档属性。
/D:m-d-y 复制在指定日期或指定日期以后改变的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。
/EXCLUDE:file1[+file2][+file3]...
指定含有字符串的文件列表。每个字符串在文件中应位于单独的一行。
如果任何字符串与复制文件的绝对路径的任何部分相符,则不会复制该文件。
例如,指定如 \obj\ 或 .obj 的字符串会排除目录 obj 下面的
所有文件或带有 .obj 扩展名的所有文件。
/P 创建每个目标文件前提示您。
/S 复制目录和子目录,不包括空目录。
/E 复制目录和子目录,包括空目录。与 /S /E 相同。可以用来修改 /T。
/V 验证每个新文件的大小。
/W 提示您在复制前按键。
/C 即使有错误,也继续复制。
/I 如果目标不存在,且要复制一个以上的文件,则假定目标必须是目录。
/Q 复制时不显示文件名。
/F 复制时显示完整的源文件名和目标文件名。
/L 显示要复制的文件。
/G 允许将加密文件复制到不支持加密的目标。
/H 也复制隐藏和系统文件。
/R 覆盖只读文件。
/T 创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包括空的目录和子目录。
/U 只复制已经存在于目标中的文件。
/K 复制属性。一般的 Xcopy 会重设只读属性。
/N 用生成的短名复制。
/O 复制文件所有权和 ACL 信息。
/X 复制文件审核设置(隐含 /O)。
/Y 禁止提示以确认覆盖一个现存目标文件。
/-Y 要提示以确认覆盖一个现存目标文件。
/Z 在可重新启动模式下复制网络文件。
/B 复制符号链接本身和链接目标。
示例:
xcopy test d: /e 复制test目录下所有文件及文件夹到d盘
MOVE 将一个或多个文件从一个目录移动到另一个目录
要移动至少一个文件:
MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination
要重命名一个目录:
MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2
[drive:][path]filename1 指定您想移动的文件位置和名称。
destination 指定文件的新位置。目标可包含一个驱动器号和冒号、一个目录名或组合。如果只移动一个文件并在移动时将其重命名,您还可以包括文件名。
[drive:][path]dirname1 指定要重命名的目录。
dirname2 指定目录的新名称。
/Y 取消确认覆盖一个现有目标文件的提示。
/-Y 对确认覆盖一个现有目标文件发出提示。
REN 重新命名文件
RENAME 重新命名文件
RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.
请注意,您不能为目标文件指定新的驱动器或路径。
REPLACE 替换文件
DATE 显示或设置日期
DATE [/T | date]
说明:
显示当前日期设置和输入新日期的提示,请键入不带参数的 DATE。要保留现有日期,请按 ENTER。
如果命令扩展被启用,DATE 命令会支持 /T 开关;该开关指示命令只输出当前日期,但不提示输入新日期。
示例:
date /t 显示当前日期,不提示输入新日期
date
TIME 显示或设置系统时间
TIME [/T | time]
说明:
显示当前时间设置和输入新时间的提示,请键入不带参数的 TIME。要保留现有时间,请按 ENTER。
如果命令扩展被启用,TIME 命令会支持 /T 命令行开关;该命令行开关告诉命令只输出当前时间,但不提示输入新时间。
示例:
time /t 显示当前时间
FIND 在一个或多个文件中搜索一个文字字符串
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
参数说明:
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。
"string" 指定要搜索的文字串。
[drive:][path]filename 指定要搜索的文件。
如果没有指定路径,FIND 将搜索键入的或者由另一命令产生的文字。
示例:
find "FIND" help.txt 在help.txt 文件中查找"FIND"字符串,列出包含该串的行,区分大小写
FINDSTR 在多个文件中搜索字符串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/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\> 字位置: 字的结束
FOR 为一套文件中的每个文件运行一个指定的命令。
FOR %variable IN (set) DO command [command-parameters]
参数说明:
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.
示例:
@echo off
echo this is my bat file
for %%i in (test1.txt,test2.txt) do (
type %%i
echo.
)
以此输出test1.txt,test2.txt文件内容
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。
示例:
for /d %%i in (test/test*) do (
echo %%i
)
输出test目录下所有test开头的目录
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。
示例:
for /r test %%i in (*) do (
echo %%i
)
列出test目录下所有文件
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)。
示例:
for /l %%i in (1,1,5) do (
echo %%i
)
输出1,2,3,4,5
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]
filenameset 为一个或多个文件名。继续到 filenameset 中的下一个文件之前,每份文件都已被打开、读取并经过处理。处理包括读取文件,将其分成一行行的文字,然后将每行解析成零或更多的符号。然后用已找到的符号字符串变量值调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号。跳过空白行。您可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个或多个指定不同解析选项的关键字。这些关键字为:
eol=c - 指一个行注释字符的结尾(就一个)
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。
usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。
示例:
for /f "eol=; tokens=2,3* delims=, " %%i in (myfile.txt) do (
echo %%i %%j %%k
)
逐行解析myfile.txt,忽略;开头的行,用,和空格分隔每行得到tokens,然后将第二个token赋给%%i,第三个token赋给%%j,之后的所有字符给%%k
for /f "usebackq delims==" %%i IN (`set`) DO @echo %%i
输出所有环境变量名
for /f "delims==" %%i in ('dir /b') do @echo %%~ti
输出当前目录下所有文件及目录的日期和时间
IF 在批处理程序中执行有条件的处理过程
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
command后可跟else子句,ELSE 子句必须出现在同一行上的 IF 之后。例如:
IF EXIST filename. (
del filename.
) ELSE (
echo filename. missing.
)
如果命令扩展被启用,IF 会如下改变:
IF [/I] string1 compare-op string2 command
IF CMDEXTVERSION number command
IF DEFINED variable command
其中, compare-op 可以是:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
而 /I 开关(如果指定)说明要进行的字符串比较不分大小写。/I 开关可以用于 IF 的 string1==string2 的形式上。这些比较都是通用的;原因是,如果 string1 和 string2 都是由数字组成的,字符串会被转换成数字,进行数字比较。
CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它是在跟与命令扩展有关联的内部版本号比较。第一个版本是 1。每次对命令扩展有相当大的增强时,版本号会增加一个。命令扩展被停用时,CMDEXTVERSION 条件不是真的。
如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样,除了它取得一个环境变量,返回的结果是 true。
示例:
@echo off
echo this is my bat file
set var=1
if %var%==1 (
echo printvar1
) else (
echo printvar2
)
pause
CLS 清除屏幕
CMD 打开另一个 Windows 命令解释程序窗口
ECHO 显示消息,或将命令回显打开或关上。输入空行echo.
TYPE 显示文本文件的内容。
MORE 逐屏显示输出。
COLOR 设置默认控制台前景和背景颜色。
EXIT 退出 CMD.EXE 程序(命令解释程序)。
GOTO 将 Windows 命令解释程序指向批处理程序中某个带标签的行。
PATH 为可执行文件显示或设置搜索路径。
PAUSE 停止批处理文件的处理并显示信息。
PROMPT 改变 Windows 命令提示。
REM 记录批处理文件或 CONFIG.SYS 中的注释。
SET 显示、设置或删除 Windows 环境变量
SET [variable=[string]]
参数说明:
variable 指定环境变量名。
string 指定要指派给变量的一系列字符串。
示例:
set 显示所有当前环境变量
set p 显示所有p开头的变量
SET /A expression
SET /P variable=[promptString]
参数说明:
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式评估器很简单并以递减的优先权顺序支持下列操作:
() - 分组
! ~ - - 一元运算符
* / % - 算数运算符
+ - - 算数运算符
<<>> - 逻辑移位
& - 按位“与”
^ - 按位“异”
| - 按位“或”
= *= /= %= += -= - 赋值
&= ^= |= <<=>>=
, - 表达式分隔符
如果您使用任何逻辑或取余操作符, 您需要将表达式字符串用引号扩起来。在表达式中的任何非数字字符串键作为环境变量名称,这些环境变量名称的值已在使用前转换成数字。如果指定
了一个环境变量名称,但未在当前环境中定义,那么值将被定为零。这使您可以使用环境变量值做计算而不用键入那些 % 符号来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,
那么它显示该表达式的最后值。该分配的操作符在分配的操作符左边需要一个环境变量名称。除十六进制有 0x 前缀,八进制有 0 前缀的,数字值为十进位数字。因此,0x12 与 18 和 022
相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,因为 8 和 9 不是有效的八进制位数。
示例:
set /a a=(1+3)*4 给a赋值16
set /a b=!4 给b赋值0
set /a c=1 "&" 1 给c赋值1
set /a d=12/3, e=12%3
/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。
示例:set /p aaa="please input an int var:"
set %PATH:str1=str2% 用str2退换PATH中str1
set %PATH:~10,5% 截取从第11个字符开始的5个字符
set %PATH:~-10% 截取最后10个字符
set %PATH:~0,-2% 取除了最后2个字符外的所有字符
几个动态环境变量:
%CD% - 扩展到当前目录字符串
%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期
%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值
%CMDEXTVERSION% - 扩展到当前命令处理器扩展版本号
%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行
SETLOCAL 开始用批文件改变环境的本地化。
ENDLOCAL 结束批文件中环境更改的本地化。
SCHTASKS 安排命令和程序在一部计算机上按计划运行。
SHIFT 调整批处理文件中可替换参数的位置。
SHUTDOWN 让机器在本地或远程正确关闭。
SORT 将输入排序。
TASKLIST 显示包括服务的所有当前运行的任务
示例:
tasklist /fi "status eq running" /fo table 按表格方式列出处于运行状态的进程
TASKKILL 终止正在运行的进程或应用程序
示例:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *
TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"