DOS批处理命令大全

COMMAND

DOS批处理命令大全

帮助文件

WING

12

目 录

MOVE /? ................................................................ 3

COPY /? ................................................................ 3

DEL /? ................................................................. 4

AT /? .................................................................. 5

TIME [/T | time] ....................................................... 5

DATE [/T | date] ...................................................... 6

GOTO /? ................................................................ 6

CALL /? ................................................................ 6

FOR /? ................................................................. 8

SET /? ................................................................ 11

REG Operation /? ...................................................... 15

dir /? ................................................................ 23

md /? ................................................................. 24

chdir /? .............................................................. 24

C:\>ren /? ............................................................ 25

diskcopy /? ........................................................... 26

xcopy /? .............................................................. 26

path /? ............................................................... 30

chkdsk /? ............................................................. 30

format /? ............................................................. 31

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 对确认改写一个现有目标文件发出提示。

命令行开关 /Y 可以出现在 COPYCMD 环境变量中。这可以用命令行上

的 /-Y 替代。默认值是,除非 MOVE 命令是从一个批脚本内

执行的,改写时都发出提示。

COPY /?

将一份或多份文件复制到另一个位置。

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]

[+ source [/A | /B] [+ ...]] [destination [/A | /B]]

source 指定要复制的文件。

/A 表示一个 ASCII 文本文件。

/B 表示一个二进位文件。

/D 允许解密要创建的目标文件

destination 为新文件指定目录和/或文件名。

/V 验证新文件写入是否正确。

/N 复制带有非 8dot3 名称的文件时,

尽可能使用短文件名。

/Y 不使用确认是否要改写现有目标文件

的提示。

/-Y 使用确认是否要改写现有目标文件

的提示。

/Z 用可重新启动模式复制已联网的文件。

命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。

这可能会被命令行上的 /-Y 替代。除非 COPY

命令是在一个批文件脚本中执行的,默认值应为

在改写时进行提示。

要附加文件,请为目标指定一个文件,为源指定

数个文件(用通配符或 file1+file2+file3 格式)。

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 存档文件

- 表示“否”的前缀

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

/S 开关的显示句法会颠倒,即只显示已经

删除的文件,而不显示找不到的文件。

AT /?

AT 命令安排在特定日期和时间运行命令和程序。

要使用 AT 命令,计划服务必须已在运行中。

AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]

AT [\\computername] time [/INTERACTIVE]

[ /EVERY:date[,...] | /NEXT:date[,...]] "command"

\\computername 指定远程计算机。 如果省略这个参数,

会计划在本地计算机上运行命令。

id 指定给已计划命令的识别号。

/delete 删除某个已计划的命令。如果省略 id,

计算机上所有已计划的命令都会被删除。

/yes 不需要进一步确认时,跟删除所有作业

的命令一起使用。

time 指定运行命令的时间。

/interactive 允许作业在运行时,与当时登录的用户

桌面进行交互。

/every:date[,...] 每个月或每个星期在指定的日期运行命

令。如果省略日期,则默认为在每月的

本日运行。

/next:date[,...] 指定在下一个指定日期(如,下周四)运

行命令。如果省略日期,则默认为在每

月的本日运行。

"command" 准备运行的 Windows NT 命令或批处理

程序。

TIME [/T | time]

显示当前时间设置和输入新时间的提示,请键入

不带参数的 TIME。要保留现有时间,请按 ENTER。

如果命令扩展名被启用,DATE 命令会支持 /T 命令行开关;该命令行开关告诉

命令只输出当前时间,但不提示输出新时间。

DATE [/T | date]

显示当前日期设置和输入新日期的提示,请键入

不带参数的 DATE。要保留现有日期,请按 ENTER。

如果命令扩展名被启用,DATE 命令会支持 /T 开关;

该开关指示命令只输出当前日期,但不提示输出新日期。

GOTO /?

将 cmd.exe 导向到批处理程序中带标签的行。

GOTO label

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

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

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

GOTO 命令现在接受目标标签 :EOF,这个标签将控制转移到当前

批脚本文件的结尾。不定义就退出批脚本文件,这是一个容易的

办法。有关能使该功能有用的 CALL 命令的扩展名描述,请键入

CALL /?。

CALL /?

从批处理程序调用另一个批处理程序。

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

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

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

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

CALL:label arguments

一个新的批文件上下文由指定的参数所创建,控制在卷标被指定

后传递到语句。您必须通过达到批脚本文件末两次来 "exit" 两次。

第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次

会退出批脚本。键入 GOTO /?,参看 GOTO : EOF 扩展名的描述,

此描述允许您从一个批脚本返回。

另外,批脚本文本参数参照(%0、%1、等等)已如下改变:

批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)

批参数(%n)的替代已被增强。您可以使用以下语法:

%~1 - 删除引号("),扩充 %1

%~f1 - 将 %1 扩充到一个完全合格的路径名

%~d1 - 仅将 %1 扩充到一个驱动器号

%~p1 - 仅将 %1 扩充到一个路径

%~n1 - 仅将 %1 扩充到一个文件名

%~x1 - 仅将 %1 扩充到一个文件扩展名

%~s1 - 扩充的路径指含有短名

%~a1 - 将 %1 扩充到文件属性

%~t1 - 将 %1 扩充到文件的日期/时间

%~z1 - 将 %1 扩充到文件的大小

%~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1

扩充到找到的第一个完全合格的名称。如果环境 变量名未被定义,或者没有找到文件,此组合键会 扩充到空字符串

可以组合修定符来取得多重结果:

%~dp1 - 只将 %1 扩展到驱动器号和路径

%~nx1 - 只将 %1 扩展到文件名和扩展名

%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,

并扩展到找到的第一个文件的驱动器号和路径。 %~ftza1 - 将 %1 扩展到类似 DIR 的输出行。

在上面的例子中,%1 和 PATH 可以被其他有效数值替换。

%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*

使用

FOR /?

对一组文件中的每一个文件执行某个特定命令。

FOR %variable IN (set) DO command [command-parameters]

%variable 指定一个单一字母可替换的参数。

(set) 指定一个或一组文件。可以使用通配符。

command 指定对每个文件执行的命令。

command-parameters

为特定命令指定参数或命令行开关。

在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable

而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.

如果命令扩展名被启用,下列额外的 FOR 命令格式会受到

支持:

FOR /D %variable IN (set) DO command [command-parameters]

如果集中包含通配符,则指定与目录名匹配,而不与文件

名匹配。

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

检查以 [drive:]path 为根的目录树,指向每个目录中的

FOR 语句。如果在 /R 后没有指定目录,则使用当前

目录。如果集仅为一个单点(.)字符,则枚举该目录树。

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 /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]

或者,如果有 usebackq 选项:

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 中的每一行,忽略以分号打头的那些行,将

每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或

空格定界符号。请注意,这个 for 程序体的语句引用 %i 来

取得第二个符号,引用 %j 来取得第三个符号,引用 %k

来取得第三个符号后的所有剩余符号。对于带有空格的文件

名,您需要用双引号将文件名括起来。为了用这种方式来使

用双引号,您还需要使用 usebackq 选项,否则,双引号会

被理解成是用作定义某个要分析的字符串的。

%i 专门在 for 语句中得到说明,%j 和 %k 是通过

tokens= 选项专门得到说明的。您可以通过 tokens= 一行

指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或

'Z' 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;而且, 同时不能有 52 个以上都在使用中。

您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,

用单引号将括号之间的 filenameset 括起来。这样,该字符

串会被当作一个文件中的一个单一输入行。

最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将 括号之间的 filenameset 变成一个反括字符串。该字符串会

被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进

内存,并被当作文件分析。因此,以下例子:

FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

会枚举当前环境中的环境变量名称。

另外,FOR 变量参照的替换已被增强。您现在可以使用下列

选项语法:

~I - 删除任何引号("),扩充 %I

%~fI - 将 %I 扩充到一个完全合格的路径名

%~dI - 仅将 %I 扩充到一个驱动器号

%~pI - 仅将 %I 扩充到一个路径

%~nI - 仅将 %I 扩充到一个文件名

%~xI - 仅将 %I 扩充到一个文件扩展名

%~sI - 扩充的路径只含有短名

%~aI - 将 %I 扩充到文件的文件属性

%~tI - 将 %I 扩充到文件的日期/时间

%~zI - 将 %I 扩充到文件的大小

%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩充到 空字符串

可以组合修饰符来得到多重结果:

%~dpI - 仅将 %I 扩充到一个驱动器号和路径

%~nxI - 仅将 %I 扩充到一个文件名和扩展名

%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名

%~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充

到找到的第一个驱动器号和路径。

%~ftzaI - 将 %I 扩充到类似输出线路的 DIR

在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法

用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名

比较易读,而且避免与不分大小写的组合键混淆。

SET /?

显示、设置或删除 cmd.exe 环境变量。

SET [variable=[string]]

variable 指定环境变量名。

string 指定要指派给变量的一系列字符串。

要显示当前环境变量,键入不带参数的 SET。

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

可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配

SET 命令已使用的名称的所有变量的值。例如:

SET P

会显示所有以字母 P 打头的变量

如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL

设置成 1。

SET 命令不允许变量名含有等号。

在 SET 命令中添加了两个新命令行开关:

SET /A expression

SET /P variable=[promptString]

/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式

评估器很简单并以递减的优先权顺序支持下列操作:

() - 分组

! ~ - - 一元运算符

* / % - 算数运算符

+ - - 算数运算符

> - 逻辑移位

- 按位“与”

^ - 按位“异”

| - 按位“或”

= *= /= %= += -= - 赋值

&= ^= |= >=

, - 表达式分隔符

如果您使用任何逻辑或取余操作符, 您需要将表达式字符串用

引号扩起来。在表达式中的任何非数字字符串键作为环境变量

名称,这些环境变量名称的值已在使用前转换成数字。如果指定

了一个环境变量名称,但未在当前环境中定义,那么值将被定为

零。这使您可以使用环境变量值做计算而不用键入那些 % 符号

来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,

那么它显示该表达式的最后值。该分配的操作符在分配的操作符

左边需要一个环境变量名称。除十六进制有 0x 前缀, 八进制

有 0 前缀的,数字值为十进位数字。因此, 0x12 与 18 和 022

相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,

因为 8 和 9 不是有效的八进制位数。

/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入

行之前,显示指定的 promptString。promptString 可以是空的。

环境变量替换已如下增强:

%PATH:str1=str2%

会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。

要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。

"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的

开始到 str1 剩余部分第一次出现的地方,都一直保持相配。

也可以为扩展名指定子字符串。

%PATH:~10,5%

会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏

移量 10)字符开始的五个字符。如果没有指定长度,则采用默认

值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,

使用的数字则是环境变量数值长度加上指定的偏移量或长度。

%PATH:~-10%

会提取 PATH 变量的最后十个字符。

%PATH:~0,-2%

会提取 PATH 变量的所有字符,除了最后两个。

终于添加了延迟环境变量扩充的支持。该支持总是按默认值被

停用,但也可以通过 CMD.EXE 的 /V 命令行开关而被启用/停用。

请参阅 CMD /?

考虑到读取一行文本时所遇到的目前扩充的限制时,延迟环境

变量扩充是很有用的,而不是执行的时候。以下例子说明直接

变量扩充的问题:

set VAR=before

if "%VAR%" == "before" (

set VAR=after

if "%VAR%" == "after" @echo If you see this, it worked

)

不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中

的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个

复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和

"after",这两者永远不会相等。同样,以下这个例子也不会达到

预期效果:

set LIST=

for %i in (*) do set LIST=%LIST% %i

echo %LIST%

原因是,它不会在目前的目录中建立一个文件列表,而只是将

LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在

FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量

是空的。因此,我们真正执行的 FOR 循环是:

for %i in (*) do set LIST= %i

这个循环继续将 LIST 设成找到的最后一个文件。

延迟环境变量扩充允许您使用一个不同的字符(惊叹号)在执行

时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面

例子写成以下所示,以达到预期效果:

set VAR=before

if "%VAR%" == "before" (

set VAR=after

if "!VAR!" == "after" @echo If you see this, it worked

)

set LIST=

for %i in (*) do set LIST=!LIST! %i

echo %LIST%

如果命令扩展名被启用,有几个动态环境变量可以被扩展,但

不会出现在 SET 显示的变量列表中。每次变量数值被扩展时,

这些变量数值都会被动态计算。如果用户用这些名称中任何

一个定义变量,那个定义会替代下面描述的动态定义:

%CD% - 扩展到当前目录字符串。

%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。

%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。

%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。

%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。

%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。

%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。

REG Operation [参数列表]

Operation [ QUERY | ADD | DELETE | COPY |

SAVE | LOAD | UNLOAD | RESTORE |

COMPARE | EXPORT | IMPORT ]

返回代码: (除了 REG COMPARE)

0 - 成功

1 - 失败

要得到有关某个操作的帮助,请键入:

REG Operation /?

例如:

REG QUERY /?

REG ADD /?

REG DELETE /?

REG COPY /?

REG SAVE /?

REG RESTORE /?

REG LOAD /?

REG UNLOAD /?

REG COMPARE /?

REG EXPORT /?

REG IMPORT /?

C:\Documents and Settings\xuwd>

Windows 控制台注册表工具 - 版本 3.0

版权所有 (C) Microsoft Corp. 1981-2001.

保留所有权利。

REG QUERY KeyName [/v ValueName | /ve] [/s]

KeyName [\Machine\]FullKey

Machine 远程机器名 - 忽略当前机器的默认值

远程机器上只有 HKLM 和 HKU

FullKey 格式为 ROOTKEY\SubKey

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

/v 查询特定注册表项

ValueName 所选项下的要查询的值的名称

省略时,该项下的所有值都会得到查询

/ve 查询默认值或空白值名称

/s 查询所有子项和值

例如:

REG QUERY HKLM\Software\Microsoft\ResKit /v Version

显示注册表值 Version 的值

REG QUERY HKLM\Software\Microsoft\ResKit\r

t\Setup /s

显示注册表项 Setup 下的所有子项和值

REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]

KeyName [\\Machine\]FullKey

远程机器的机器名 - 忽略默认到当前机器。

远程机器上只有 HKLM 和 HKU。

FullKey ROOTKEY\SubKey

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下注册表项的完整名

/v 所选项之下要添加的值名

/ve 为注册表项添加空白值名

/t RegKey 数据类型

[ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN | REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN | REG_NONE | REG_EXPAND_SZ ]

如果忽略,则采用 REG_SZ

/s 指定一个在 REG_MULTI_SZ 数据字符串中

用作分隔符的字符

如果忽略,则将 "\0" 用作分隔符

/d 要分配给添加的注册表 ValueName 的数据

/f 不用提示就强行改写现有注册表项

例如:

REG ADD \\ABC\HKLM\Software\MyCo

添加远程机器 ABC 上的一个注册表项 HKLM\Software\MyCo

REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead 添加一个值(名称: Data,类型: REG_BINARY,数据: fe340ead)

REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail 添加一个值(名称: MRU,类型: REG_MUTLI_SZ,数据: fax\0mail\0\0)

REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%% 添加一个值(名称: Path,类型: REG_EXPAND_SZ,数据: %systemroot%) 注意: 在扩充字符串中使用双百分比符号( %% )

REG DELETE KeyName [/v ValueName | /ve | /va] [/f]

KeyName [\\Machine\]FullKey

Machine 远程机器名 - 忽略当前机器的默认值

远程机器上只有 HKLM 和 HKU

FullKey ROOTKEY\SubKey

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

ValueName 所选项下的要删除的值的名称

省略时,该项下的所有子项和值都会被删除

/ve 删除空白值名称的值

/va 删除该项下的所有值

/f 不用提示就强行删除

例如:

REG DELETE HKLM\Software\MyCo\MyApp\Timeout

删除注册表项 Timeout 及其所有子项和值

REG DELETE \\ZODIAC\HKLM\Software\MyCo /v MTU

删除 ZODIAC 上 MyCo 下的注册表项 MTU

REG COPY KeyName1 KeyName2 [/s] [/f]

KeyName [\\Machine\]FullKey

Machine 远程机器名 - 忽略当前机器的默认值

远程机器上只有 HKLM 和 HKU

FullKey ROOTKEY\SubKey

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

/s 复制所有子项和值

/f 不用提示就强行复制

例如:

REG COPY HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp /s

将注册表项 MyApp 下的所有子项和值复制到注册表项 SaveMyApp

REG COPY \\ZODIAC\HKLM\Software\MyCo HKLM\Software\MyCo1

将 ZODIAC 上注册表项 MyCo 下的所有值

复制到当前机器上的注册表项 MyCo1

REG SAVE KeyName FileName

KeyName ROOTKEY\SubKey

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

FileName 要保存的磁盘文件名。如果没有指定路径,

文件会在调用进程的当前文件夹中得到创建

例如:

REG SAVE HKLM\Software\MyCo\MyApp AppBkUp.hiv

将配置单元 MyApp 保存到当前文件夹中的文件 AppBkUp.hiv

REG RESTORE KeyName FileName

KeyName ROOTKEY\SubKey (只是本地机器)

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 要将配置单元文件还原到的注册表项全名。

改写现有项的值和子项

FileName 要还原的配置单元文件名

您必须使用 REG SAVE 来创建这个文件

例如:

REG RESTORE HKLM\Software\Microsoft\ResKit NTRKBkUp.hiv

还原文件 NTRKBkUp.hiv,改写注册表项 ResKit

REG LOAD KeyName FileName

KeyName ROOTKEY\SubKey (只是本地机器的)

ROOTKEY [ HKLM | HKU ]

SubKey 要将配置单元文件加载进的注册表项名称。创建一个新的注册表项 FileName 要加载的配置单元文件名

您必须使用 REG SAVE 来创建这个文件

例如:

REG LOAD HKLM\TempHive TempHive.hiv

将文件 TempHive.hiv 加载到注册表项 HKLM\TempHive

REG UNLOAD KeyName

KeyName ROOTKEY\SubKey (只是本地机器的)

ROOTKEY [ HKLM | HKU ]

SubKey 要卸载的配置单元的注册表项名称

例如:

REG UNLOAD HKLM\TempHive

卸载 HKLM 中的配置单元 TempHive

REG COMPARE KeyName1 KeyName2 [/v ValueName | /ve] [Output] [/s]

KeyName [\\Machine\]FullKey

Machine 远程机器名 - 省略当前机器的默认值

远程机器上只有 HKLM 和 HKU

FullKey ROOTKEY\SubKey

如果没有指定 FullKey2,FullKey2 则跟 FullKey1 相同

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

ValueName 所选注册表项下的要比较的值的名称

省略时,该项下的所有值都会得到比较

/ve 比较空白值名称的值

/s 比较所有子项和值

Output [/oa | /od | /os | /on]

省略时,只显示不同的结果

/oa 显示所有不同和匹配结果

/od 只显示不同的结果

/os 只显示匹配结果

/on 不显示结果

返回代码:

0 - 成功,比较的结果相同

1 - 失败

2 - 成功,比较的结果不同

例如:

REG COMPARE HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp 将注册表项 MyApp 下的所有值跟 SaveMyApp 比较

REG COMPARE HKLM\Software\MyCo HKLM\Software\MyCo1 /v Version

比较注册表项 MyCo 和 MyCo1 下的值 Version

REG COMPARE \\ZODIAC\HKLM\Software\MyCo \\. /s

将 ZODIAC 上 HKLM\Software\MyCo 下的

所有子项和值和当前机器上的相同项比较

REG EXPORT KeyName FileName

Keyname ROOTKEY\SubKey (local machine only)

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

FileName 要导出的磁盘文件名

例如:

REG EXPORT HKLM\Software\MyCo\MyApp AppBkUp.reg

将注册表项 MyApp 的所有子项和值导出到文件 AppBkUp.reg

REG IMPORT FileName

FileName 要导入的磁盘文件名(只用于本地机器)

例如:

REG IMPORT AppBkUp.reg

从文件 AppBkUp.reg 导入注册表项

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 用四位数字显示年

可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)

来替代预先设定的开关。例如,/-W。

md /?

创建目录。

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。

chdir /?

显示当前目录名或改变当前目录。

CHDIR [/D] [drive:][path]

CHDIR [..]

CD [/D] [drive:][path]

CD [..]

.. 指定要改成父目录。

键入 CD 驱动器: 显示指定驱动器中的当前目录。

不带参数只键入 CD,则显示当前驱动器和目录。

使用 /D 命令行开关,除了改变驱动器的当前目录之外,

还可改变当前驱动器。

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

当前的目录字符串会被转换成使用磁盘名上的大小写。所以,

如果磁盘上的大小写如此,CD C : \TEMP 会将当前目录设为

C:\Temp。

CHDIR 命令不把空格当作分隔符,因此有可能将目录名改为一个

带有空格但不带有引号的子目录名。例如:

cd \winnt\profiles\username\programs\start menu

与下列相同:

cd "\winnt\profiles\username\programs\start menu"

在扩展功能停用的情况下,您必须键入以上命令。

C:\>ren /?

重命名文件。

RENAME [drive:][path]filename1 filename2.

REN [drive:][path]filename1 filename2.

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

diskcopy /?

把一张软盘的内容复制到另一张。

DISKCOPY [drive1: [drive2:]] [/V]

/V 校验信息复制得是否正确。

两张软盘的类型必须相同。

您可以为 drive1 和 drive2 指定同样的驱动器。

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]

[/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 复制文件审核设置(隐含 /O)。

现存目标文件。

/-Y 导致提示以确认改写一个

现存目标文件。

/Z 用重新启动模式复制网络文件。

命令行开关 /Y 可以预先在 COPYCMD 环境变量中设置。

这可能被命令行上的 /-Y 改写。

Microsoft Windows XP [版本 5.1.2600]

(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\xuwd>if /?

执行批处理程序中的条件处理。

IF [NOT] ERRORLEVEL number command

IF [NOT] string1==string2 command

IF [NOT] EXIST filename command

NOT 指定只有条件为 false 的情况下, Windows XP 才 应该执行该命令。

ERRORLEVEL number 如果最后运行的程序返回一个等于或大于

指定数字的退出编码,指定条件为 true。

string1==string2 如果指定的文字字符串匹配,指定条件为 true。

EXIST filename 如果指定的文件名存在,指定条件为 true。

command 如果符合条件,指定要执行的命令。如果指定的

条件为 FALSE,命令后可跟一个执行 ELSE

关键字后的命令的 ELSE 命令。

ELSE 子句必须在 IF 之后出现在同一行上。例如:

IF EXIST filename. (

del filename.

) ELSE (

echo filename. missing.

)

因为 del 命令需要用一个新行终止,以下子句不会有效:

IF EXIST filename. del filename. ELSE echo filename. missing

由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也

不会有效:

IF EXIST filename. del filename.

ELSE echo filename. missing

如果都放在同一行上,以下子句有效:

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

其中,比较运算符可以是:

EQU - 等于

NEQ - 不等于

LSS - 小于

LEQ - 小于或等于

GTR - 大于

GEQ - 大于或等于

及 /I 开关;如果该开关被指定,则说明要进行的字符串比较不分

大小写。/I 开关可以用于 IF 的 string1==string2 的形式上。这些

比较都是通用的;原因是,如果 string1 和 string2 都是由数字

组成的,字符串会被转换成数字,进行数字比较。

CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它

是在跟与命令扩展名有关联的内部版本号比较。第一个版本

是 1。每次对命令扩展名有相当大的增强时,版本号会增加一个。

命令扩展名被停用时,CMDEXTVERSION 条件不是真的。

如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样,

除了它取得一个环境变量,返回的结果是 true。

如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL%

会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,您会得到

其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法:

goto answer%ERRORLEVEL%

:answer0

echo Program had return code 0

:answer1

echo Program had return code 1

您也可以使用以上的数字比较:

IF %ERRORLEVEL% LEQ 1 goto okay

如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE%

将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始

命令行;否则,您会得到其数值。

如果没有名为 CMDEXTVERSION 的环境变量,

%CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的

字串符表达式;否则,您会得到其数值。

path /?

为可执行文件显示或设置一个搜索路径。

PATH [[drive:]path[;...][;%PATH%]

PATH ;

键入 PATH ; 清除所有搜索路径设置并指示 cmd.exe 只在当前

目录中搜索。

键入 PATH 但不加参数,显示当前路径。

将 %PATH% 包括在新的路径设置中会将旧路径附加到新设置。

chkdsk /?

检查磁盘并显示状态报告。

CHKDSK [volume[[path]filename]]] [/F] [/V] [/R] [/X] [/I] [/C] [/L[:size]]

volume 指定驱动器(后面跟一个冒号)、装入点

或卷名。

filename 仅用于 FAT/FAT32: 指定要检查是否有碎片的文件。 /F 修复磁盘上的错误。

/V 在 FAT/FAT32 上: 显示磁盘上每个文件的完整路径和名称。 在 NTFS 上: 如果有清除消息,将其显示。

/R 查找不正确的扇区并恢复可读信息(隐含 /F)。

/L:size 仅用于 NTFS: 将日志文件大小改成指定的 KB 数。

如果没有指定大小,则显示当前的大小。

/X 如果必要,强制卷先卸下。

卷的所有打开的句柄就会无效(隐含 /F)。

/I 仅用于 NTFS: 对索引项进行强度较小的检查。

/C 仅用于 NTFS: 跳过文件夹结构的循环检查。

/I 和 /C 命令行开关跳过卷的某些检查,减少运行 Chkdsk 所需的时间。

format /?

格式化磁盘以供 Windows XP 使用。

FORMAT volume [/FS:file-system] [/V:label] [/Q] [/A:size] [/C] [/X]

FORMAT volume [/V:label] [/Q] [/F:size]

FORMAT volume [/V:label] [/Q] [/T:tracks /N:sectors]

FORMAT volume [/V:label] [/Q]

FORMAT volume [/Q]

volume 指定驱动器(后面跟一个冒号)、装入点

或卷名。

/FS:filesystem 指定文件系统类型(FAT、FAT32 或 NTFS)。

/V:label 指定卷标。

/Q 执行快速格式化。

/C 仅适于 NTFS: 默认情况下,将压缩在该新建卷上

创建的文件。

/X 如果必要,先强制卸下卷。那时,该卷所有

已打开的句柄不再有效。

/A:size 替代默认配置单位大小。极力建议您在一般状况下使用

默认设置。

NTFS 支持 512、1024、2048、4096、8192、16K、32K、

64K。

FAT 支持 512、1024、2048、4096、8192、16K、32K、

64k,(128k、256k 用于大于 512 字节的扇区) 。

FAT32 支持 512、1024、2048、4096、8192、16k、32k、 64k,(128k 、256k 用于大于 512 字节的扇区)。

注意 FAT 及 FAT32 文件系统对卷上的群集数量有以下限制:

FAT: 群集数量

FAT32: 65526

如果判定使用指定的群集大小无法满足以上需求,格式

化将立即停止。

NTFS 压缩不支持大于 4096 的分配单元。

/F:size 指定要格式化的软盘大小(1.44)

/T:tracks 为磁盘指定每面磁道数。

/N:sectors 指定每条磁道的扇区数。

@ 与echo off相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。

COMMAND

DOS批处理命令大全

帮助文件

WING

12

目 录

MOVE /? ................................................................ 3

COPY /? ................................................................ 3

DEL /? ................................................................. 4

AT /? .................................................................. 5

TIME [/T | time] ....................................................... 5

DATE [/T | date] ...................................................... 6

GOTO /? ................................................................ 6

CALL /? ................................................................ 6

FOR /? ................................................................. 8

SET /? ................................................................ 11

REG Operation /? ...................................................... 15

dir /? ................................................................ 23

md /? ................................................................. 24

chdir /? .............................................................. 24

C:\>ren /? ............................................................ 25

diskcopy /? ........................................................... 26

xcopy /? .............................................................. 26

path /? ............................................................... 30

chkdsk /? ............................................................. 30

format /? ............................................................. 31

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 对确认改写一个现有目标文件发出提示。

命令行开关 /Y 可以出现在 COPYCMD 环境变量中。这可以用命令行上

的 /-Y 替代。默认值是,除非 MOVE 命令是从一个批脚本内

执行的,改写时都发出提示。

COPY /?

将一份或多份文件复制到另一个位置。

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]

[+ source [/A | /B] [+ ...]] [destination [/A | /B]]

source 指定要复制的文件。

/A 表示一个 ASCII 文本文件。

/B 表示一个二进位文件。

/D 允许解密要创建的目标文件

destination 为新文件指定目录和/或文件名。

/V 验证新文件写入是否正确。

/N 复制带有非 8dot3 名称的文件时,

尽可能使用短文件名。

/Y 不使用确认是否要改写现有目标文件

的提示。

/-Y 使用确认是否要改写现有目标文件

的提示。

/Z 用可重新启动模式复制已联网的文件。

命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。

这可能会被命令行上的 /-Y 替代。除非 COPY

命令是在一个批文件脚本中执行的,默认值应为

在改写时进行提示。

要附加文件,请为目标指定一个文件,为源指定

数个文件(用通配符或 file1+file2+file3 格式)。

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 存档文件

- 表示“否”的前缀

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

/S 开关的显示句法会颠倒,即只显示已经

删除的文件,而不显示找不到的文件。

AT /?

AT 命令安排在特定日期和时间运行命令和程序。

要使用 AT 命令,计划服务必须已在运行中。

AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]

AT [\\computername] time [/INTERACTIVE]

[ /EVERY:date[,...] | /NEXT:date[,...]] "command"

\\computername 指定远程计算机。 如果省略这个参数,

会计划在本地计算机上运行命令。

id 指定给已计划命令的识别号。

/delete 删除某个已计划的命令。如果省略 id,

计算机上所有已计划的命令都会被删除。

/yes 不需要进一步确认时,跟删除所有作业

的命令一起使用。

time 指定运行命令的时间。

/interactive 允许作业在运行时,与当时登录的用户

桌面进行交互。

/every:date[,...] 每个月或每个星期在指定的日期运行命

令。如果省略日期,则默认为在每月的

本日运行。

/next:date[,...] 指定在下一个指定日期(如,下周四)运

行命令。如果省略日期,则默认为在每

月的本日运行。

"command" 准备运行的 Windows NT 命令或批处理

程序。

TIME [/T | time]

显示当前时间设置和输入新时间的提示,请键入

不带参数的 TIME。要保留现有时间,请按 ENTER。

如果命令扩展名被启用,DATE 命令会支持 /T 命令行开关;该命令行开关告诉

命令只输出当前时间,但不提示输出新时间。

DATE [/T | date]

显示当前日期设置和输入新日期的提示,请键入

不带参数的 DATE。要保留现有日期,请按 ENTER。

如果命令扩展名被启用,DATE 命令会支持 /T 开关;

该开关指示命令只输出当前日期,但不提示输出新日期。

GOTO /?

将 cmd.exe 导向到批处理程序中带标签的行。

GOTO label

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

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

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

GOTO 命令现在接受目标标签 :EOF,这个标签将控制转移到当前

批脚本文件的结尾。不定义就退出批脚本文件,这是一个容易的

办法。有关能使该功能有用的 CALL 命令的扩展名描述,请键入

CALL /?。

CALL /?

从批处理程序调用另一个批处理程序。

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

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

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

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

CALL:label arguments

一个新的批文件上下文由指定的参数所创建,控制在卷标被指定

后传递到语句。您必须通过达到批脚本文件末两次来 "exit" 两次。

第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次

会退出批脚本。键入 GOTO /?,参看 GOTO : EOF 扩展名的描述,

此描述允许您从一个批脚本返回。

另外,批脚本文本参数参照(%0、%1、等等)已如下改变:

批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)

批参数(%n)的替代已被增强。您可以使用以下语法:

%~1 - 删除引号("),扩充 %1

%~f1 - 将 %1 扩充到一个完全合格的路径名

%~d1 - 仅将 %1 扩充到一个驱动器号

%~p1 - 仅将 %1 扩充到一个路径

%~n1 - 仅将 %1 扩充到一个文件名

%~x1 - 仅将 %1 扩充到一个文件扩展名

%~s1 - 扩充的路径指含有短名

%~a1 - 将 %1 扩充到文件属性

%~t1 - 将 %1 扩充到文件的日期/时间

%~z1 - 将 %1 扩充到文件的大小

%~$PATH : 1 - 查找列在 PATH 环境变量的目录,并将 %1

扩充到找到的第一个完全合格的名称。如果环境 变量名未被定义,或者没有找到文件,此组合键会 扩充到空字符串

可以组合修定符来取得多重结果:

%~dp1 - 只将 %1 扩展到驱动器号和路径

%~nx1 - 只将 %1 扩展到文件名和扩展名

%~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,

并扩展到找到的第一个文件的驱动器号和路径。 %~ftza1 - 将 %1 扩展到类似 DIR 的输出行。

在上面的例子中,%1 和 PATH 可以被其他有效数值替换。

%~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*

使用

FOR /?

对一组文件中的每一个文件执行某个特定命令。

FOR %variable IN (set) DO command [command-parameters]

%variable 指定一个单一字母可替换的参数。

(set) 指定一个或一组文件。可以使用通配符。

command 指定对每个文件执行的命令。

command-parameters

为特定命令指定参数或命令行开关。

在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable

而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.

如果命令扩展名被启用,下列额外的 FOR 命令格式会受到

支持:

FOR /D %variable IN (set) DO command [command-parameters]

如果集中包含通配符,则指定与目录名匹配,而不与文件

名匹配。

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

检查以 [drive:]path 为根的目录树,指向每个目录中的

FOR 语句。如果在 /R 后没有指定目录,则使用当前

目录。如果集仅为一个单点(.)字符,则枚举该目录树。

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 /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]

或者,如果有 usebackq 选项:

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 中的每一行,忽略以分号打头的那些行,将

每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或

空格定界符号。请注意,这个 for 程序体的语句引用 %i 来

取得第二个符号,引用 %j 来取得第三个符号,引用 %k

来取得第三个符号后的所有剩余符号。对于带有空格的文件

名,您需要用双引号将文件名括起来。为了用这种方式来使

用双引号,您还需要使用 usebackq 选项,否则,双引号会

被理解成是用作定义某个要分析的字符串的。

%i 专门在 for 语句中得到说明,%j 和 %k 是通过

tokens= 选项专门得到说明的。您可以通过 tokens= 一行

指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或

'Z' 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;而且, 同时不能有 52 个以上都在使用中。

您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,

用单引号将括号之间的 filenameset 括起来。这样,该字符

串会被当作一个文件中的一个单一输入行。

最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将 括号之间的 filenameset 变成一个反括字符串。该字符串会

被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进

内存,并被当作文件分析。因此,以下例子:

FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

会枚举当前环境中的环境变量名称。

另外,FOR 变量参照的替换已被增强。您现在可以使用下列

选项语法:

~I - 删除任何引号("),扩充 %I

%~fI - 将 %I 扩充到一个完全合格的路径名

%~dI - 仅将 %I 扩充到一个驱动器号

%~pI - 仅将 %I 扩充到一个路径

%~nI - 仅将 %I 扩充到一个文件名

%~xI - 仅将 %I 扩充到一个文件扩展名

%~sI - 扩充的路径只含有短名

%~aI - 将 %I 扩充到文件的文件属性

%~tI - 将 %I 扩充到文件的日期/时间

%~zI - 将 %I 扩充到文件的大小

%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩充到 空字符串

可以组合修饰符来得到多重结果:

%~dpI - 仅将 %I 扩充到一个驱动器号和路径

%~nxI - 仅将 %I 扩充到一个文件名和扩展名

%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名

%~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充

到找到的第一个驱动器号和路径。

%~ftzaI - 将 %I 扩充到类似输出线路的 DIR

在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法

用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名

比较易读,而且避免与不分大小写的组合键混淆。

SET /?

显示、设置或删除 cmd.exe 环境变量。

SET [variable=[string]]

variable 指定环境变量名。

string 指定要指派给变量的一系列字符串。

要显示当前环境变量,键入不带参数的 SET。

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

可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配

SET 命令已使用的名称的所有变量的值。例如:

SET P

会显示所有以字母 P 打头的变量

如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL

设置成 1。

SET 命令不允许变量名含有等号。

在 SET 命令中添加了两个新命令行开关:

SET /A expression

SET /P variable=[promptString]

/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式

评估器很简单并以递减的优先权顺序支持下列操作:

() - 分组

! ~ - - 一元运算符

* / % - 算数运算符

+ - - 算数运算符

> - 逻辑移位

- 按位“与”

^ - 按位“异”

| - 按位“或”

= *= /= %= += -= - 赋值

&= ^= |= >=

, - 表达式分隔符

如果您使用任何逻辑或取余操作符, 您需要将表达式字符串用

引号扩起来。在表达式中的任何非数字字符串键作为环境变量

名称,这些环境变量名称的值已在使用前转换成数字。如果指定

了一个环境变量名称,但未在当前环境中定义,那么值将被定为

零。这使您可以使用环境变量值做计算而不用键入那些 % 符号

来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,

那么它显示该表达式的最后值。该分配的操作符在分配的操作符

左边需要一个环境变量名称。除十六进制有 0x 前缀, 八进制

有 0 前缀的,数字值为十进位数字。因此, 0x12 与 18 和 022

相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,

因为 8 和 9 不是有效的八进制位数。

/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入

行之前,显示指定的 promptString。promptString 可以是空的。

环境变量替换已如下增强:

%PATH:str1=str2%

会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。

要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。

"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的

开始到 str1 剩余部分第一次出现的地方,都一直保持相配。

也可以为扩展名指定子字符串。

%PATH:~10,5%

会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏

移量 10)字符开始的五个字符。如果没有指定长度,则采用默认

值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,

使用的数字则是环境变量数值长度加上指定的偏移量或长度。

%PATH:~-10%

会提取 PATH 变量的最后十个字符。

%PATH:~0,-2%

会提取 PATH 变量的所有字符,除了最后两个。

终于添加了延迟环境变量扩充的支持。该支持总是按默认值被

停用,但也可以通过 CMD.EXE 的 /V 命令行开关而被启用/停用。

请参阅 CMD /?

考虑到读取一行文本时所遇到的目前扩充的限制时,延迟环境

变量扩充是很有用的,而不是执行的时候。以下例子说明直接

变量扩充的问题:

set VAR=before

if "%VAR%" == "before" (

set VAR=after

if "%VAR%" == "after" @echo If you see this, it worked

)

不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中

的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个

复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和

"after",这两者永远不会相等。同样,以下这个例子也不会达到

预期效果:

set LIST=

for %i in (*) do set LIST=%LIST% %i

echo %LIST%

原因是,它不会在目前的目录中建立一个文件列表,而只是将

LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在

FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量

是空的。因此,我们真正执行的 FOR 循环是:

for %i in (*) do set LIST= %i

这个循环继续将 LIST 设成找到的最后一个文件。

延迟环境变量扩充允许您使用一个不同的字符(惊叹号)在执行

时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面

例子写成以下所示,以达到预期效果:

set VAR=before

if "%VAR%" == "before" (

set VAR=after

if "!VAR!" == "after" @echo If you see this, it worked

)

set LIST=

for %i in (*) do set LIST=!LIST! %i

echo %LIST%

如果命令扩展名被启用,有几个动态环境变量可以被扩展,但

不会出现在 SET 显示的变量列表中。每次变量数值被扩展时,

这些变量数值都会被动态计算。如果用户用这些名称中任何

一个定义变量,那个定义会替代下面描述的动态定义:

%CD% - 扩展到当前目录字符串。

%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。

%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。

%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。

%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。

%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。

%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。

REG Operation [参数列表]

Operation [ QUERY | ADD | DELETE | COPY |

SAVE | LOAD | UNLOAD | RESTORE |

COMPARE | EXPORT | IMPORT ]

返回代码: (除了 REG COMPARE)

0 - 成功

1 - 失败

要得到有关某个操作的帮助,请键入:

REG Operation /?

例如:

REG QUERY /?

REG ADD /?

REG DELETE /?

REG COPY /?

REG SAVE /?

REG RESTORE /?

REG LOAD /?

REG UNLOAD /?

REG COMPARE /?

REG EXPORT /?

REG IMPORT /?

C:\Documents and Settings\xuwd>

Windows 控制台注册表工具 - 版本 3.0

版权所有 (C) Microsoft Corp. 1981-2001.

保留所有权利。

REG QUERY KeyName [/v ValueName | /ve] [/s]

KeyName [\Machine\]FullKey

Machine 远程机器名 - 忽略当前机器的默认值

远程机器上只有 HKLM 和 HKU

FullKey 格式为 ROOTKEY\SubKey

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

/v 查询特定注册表项

ValueName 所选项下的要查询的值的名称

省略时,该项下的所有值都会得到查询

/ve 查询默认值或空白值名称

/s 查询所有子项和值

例如:

REG QUERY HKLM\Software\Microsoft\ResKit /v Version

显示注册表值 Version 的值

REG QUERY HKLM\Software\Microsoft\ResKit\r

t\Setup /s

显示注册表项 Setup 下的所有子项和值

REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]

KeyName [\\Machine\]FullKey

远程机器的机器名 - 忽略默认到当前机器。

远程机器上只有 HKLM 和 HKU。

FullKey ROOTKEY\SubKey

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下注册表项的完整名

/v 所选项之下要添加的值名

/ve 为注册表项添加空白值名

/t RegKey 数据类型

[ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN | REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN | REG_NONE | REG_EXPAND_SZ ]

如果忽略,则采用 REG_SZ

/s 指定一个在 REG_MULTI_SZ 数据字符串中

用作分隔符的字符

如果忽略,则将 "\0" 用作分隔符

/d 要分配给添加的注册表 ValueName 的数据

/f 不用提示就强行改写现有注册表项

例如:

REG ADD \\ABC\HKLM\Software\MyCo

添加远程机器 ABC 上的一个注册表项 HKLM\Software\MyCo

REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead 添加一个值(名称: Data,类型: REG_BINARY,数据: fe340ead)

REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail 添加一个值(名称: MRU,类型: REG_MUTLI_SZ,数据: fax\0mail\0\0)

REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%% 添加一个值(名称: Path,类型: REG_EXPAND_SZ,数据: %systemroot%) 注意: 在扩充字符串中使用双百分比符号( %% )

REG DELETE KeyName [/v ValueName | /ve | /va] [/f]

KeyName [\\Machine\]FullKey

Machine 远程机器名 - 忽略当前机器的默认值

远程机器上只有 HKLM 和 HKU

FullKey ROOTKEY\SubKey

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

ValueName 所选项下的要删除的值的名称

省略时,该项下的所有子项和值都会被删除

/ve 删除空白值名称的值

/va 删除该项下的所有值

/f 不用提示就强行删除

例如:

REG DELETE HKLM\Software\MyCo\MyApp\Timeout

删除注册表项 Timeout 及其所有子项和值

REG DELETE \\ZODIAC\HKLM\Software\MyCo /v MTU

删除 ZODIAC 上 MyCo 下的注册表项 MTU

REG COPY KeyName1 KeyName2 [/s] [/f]

KeyName [\\Machine\]FullKey

Machine 远程机器名 - 忽略当前机器的默认值

远程机器上只有 HKLM 和 HKU

FullKey ROOTKEY\SubKey

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

/s 复制所有子项和值

/f 不用提示就强行复制

例如:

REG COPY HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp /s

将注册表项 MyApp 下的所有子项和值复制到注册表项 SaveMyApp

REG COPY \\ZODIAC\HKLM\Software\MyCo HKLM\Software\MyCo1

将 ZODIAC 上注册表项 MyCo 下的所有值

复制到当前机器上的注册表项 MyCo1

REG SAVE KeyName FileName

KeyName ROOTKEY\SubKey

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

FileName 要保存的磁盘文件名。如果没有指定路径,

文件会在调用进程的当前文件夹中得到创建

例如:

REG SAVE HKLM\Software\MyCo\MyApp AppBkUp.hiv

将配置单元 MyApp 保存到当前文件夹中的文件 AppBkUp.hiv

REG RESTORE KeyName FileName

KeyName ROOTKEY\SubKey (只是本地机器)

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 要将配置单元文件还原到的注册表项全名。

改写现有项的值和子项

FileName 要还原的配置单元文件名

您必须使用 REG SAVE 来创建这个文件

例如:

REG RESTORE HKLM\Software\Microsoft\ResKit NTRKBkUp.hiv

还原文件 NTRKBkUp.hiv,改写注册表项 ResKit

REG LOAD KeyName FileName

KeyName ROOTKEY\SubKey (只是本地机器的)

ROOTKEY [ HKLM | HKU ]

SubKey 要将配置单元文件加载进的注册表项名称。创建一个新的注册表项 FileName 要加载的配置单元文件名

您必须使用 REG SAVE 来创建这个文件

例如:

REG LOAD HKLM\TempHive TempHive.hiv

将文件 TempHive.hiv 加载到注册表项 HKLM\TempHive

REG UNLOAD KeyName

KeyName ROOTKEY\SubKey (只是本地机器的)

ROOTKEY [ HKLM | HKU ]

SubKey 要卸载的配置单元的注册表项名称

例如:

REG UNLOAD HKLM\TempHive

卸载 HKLM 中的配置单元 TempHive

REG COMPARE KeyName1 KeyName2 [/v ValueName | /ve] [Output] [/s]

KeyName [\\Machine\]FullKey

Machine 远程机器名 - 省略当前机器的默认值

远程机器上只有 HKLM 和 HKU

FullKey ROOTKEY\SubKey

如果没有指定 FullKey2,FullKey2 则跟 FullKey1 相同

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

ValueName 所选注册表项下的要比较的值的名称

省略时,该项下的所有值都会得到比较

/ve 比较空白值名称的值

/s 比较所有子项和值

Output [/oa | /od | /os | /on]

省略时,只显示不同的结果

/oa 显示所有不同和匹配结果

/od 只显示不同的结果

/os 只显示匹配结果

/on 不显示结果

返回代码:

0 - 成功,比较的结果相同

1 - 失败

2 - 成功,比较的结果不同

例如:

REG COMPARE HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp 将注册表项 MyApp 下的所有值跟 SaveMyApp 比较

REG COMPARE HKLM\Software\MyCo HKLM\Software\MyCo1 /v Version

比较注册表项 MyCo 和 MyCo1 下的值 Version

REG COMPARE \\ZODIAC\HKLM\Software\MyCo \\. /s

将 ZODIAC 上 HKLM\Software\MyCo 下的

所有子项和值和当前机器上的相同项比较

REG EXPORT KeyName FileName

Keyname ROOTKEY\SubKey (local machine only)

ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]

SubKey 所选 ROOTKEY 下的注册表项的全名

FileName 要导出的磁盘文件名

例如:

REG EXPORT HKLM\Software\MyCo\MyApp AppBkUp.reg

将注册表项 MyApp 的所有子项和值导出到文件 AppBkUp.reg

REG IMPORT FileName

FileName 要导入的磁盘文件名(只用于本地机器)

例如:

REG IMPORT AppBkUp.reg

从文件 AppBkUp.reg 导入注册表项

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 用四位数字显示年

可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)

来替代预先设定的开关。例如,/-W。

md /?

创建目录。

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。

chdir /?

显示当前目录名或改变当前目录。

CHDIR [/D] [drive:][path]

CHDIR [..]

CD [/D] [drive:][path]

CD [..]

.. 指定要改成父目录。

键入 CD 驱动器: 显示指定驱动器中的当前目录。

不带参数只键入 CD,则显示当前驱动器和目录。

使用 /D 命令行开关,除了改变驱动器的当前目录之外,

还可改变当前驱动器。

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

当前的目录字符串会被转换成使用磁盘名上的大小写。所以,

如果磁盘上的大小写如此,CD C : \TEMP 会将当前目录设为

C:\Temp。

CHDIR 命令不把空格当作分隔符,因此有可能将目录名改为一个

带有空格但不带有引号的子目录名。例如:

cd \winnt\profiles\username\programs\start menu

与下列相同:

cd "\winnt\profiles\username\programs\start menu"

在扩展功能停用的情况下,您必须键入以上命令。

C:\>ren /?

重命名文件。

RENAME [drive:][path]filename1 filename2.

REN [drive:][path]filename1 filename2.

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

diskcopy /?

把一张软盘的内容复制到另一张。

DISKCOPY [drive1: [drive2:]] [/V]

/V 校验信息复制得是否正确。

两张软盘的类型必须相同。

您可以为 drive1 和 drive2 指定同样的驱动器。

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]

[/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 复制文件审核设置(隐含 /O)。

现存目标文件。

/-Y 导致提示以确认改写一个

现存目标文件。

/Z 用重新启动模式复制网络文件。

命令行开关 /Y 可以预先在 COPYCMD 环境变量中设置。

这可能被命令行上的 /-Y 改写。

Microsoft Windows XP [版本 5.1.2600]

(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\xuwd>if /?

执行批处理程序中的条件处理。

IF [NOT] ERRORLEVEL number command

IF [NOT] string1==string2 command

IF [NOT] EXIST filename command

NOT 指定只有条件为 false 的情况下, Windows XP 才 应该执行该命令。

ERRORLEVEL number 如果最后运行的程序返回一个等于或大于

指定数字的退出编码,指定条件为 true。

string1==string2 如果指定的文字字符串匹配,指定条件为 true。

EXIST filename 如果指定的文件名存在,指定条件为 true。

command 如果符合条件,指定要执行的命令。如果指定的

条件为 FALSE,命令后可跟一个执行 ELSE

关键字后的命令的 ELSE 命令。

ELSE 子句必须在 IF 之后出现在同一行上。例如:

IF EXIST filename. (

del filename.

) ELSE (

echo filename. missing.

)

因为 del 命令需要用一个新行终止,以下子句不会有效:

IF EXIST filename. del filename. ELSE echo filename. missing

由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也

不会有效:

IF EXIST filename. del filename.

ELSE echo filename. missing

如果都放在同一行上,以下子句有效:

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

其中,比较运算符可以是:

EQU - 等于

NEQ - 不等于

LSS - 小于

LEQ - 小于或等于

GTR - 大于

GEQ - 大于或等于

及 /I 开关;如果该开关被指定,则说明要进行的字符串比较不分

大小写。/I 开关可以用于 IF 的 string1==string2 的形式上。这些

比较都是通用的;原因是,如果 string1 和 string2 都是由数字

组成的,字符串会被转换成数字,进行数字比较。

CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它

是在跟与命令扩展名有关联的内部版本号比较。第一个版本

是 1。每次对命令扩展名有相当大的增强时,版本号会增加一个。

命令扩展名被停用时,CMDEXTVERSION 条件不是真的。

如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样,

除了它取得一个环境变量,返回的结果是 true。

如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL%

会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,您会得到

其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法:

goto answer%ERRORLEVEL%

:answer0

echo Program had return code 0

:answer1

echo Program had return code 1

您也可以使用以上的数字比较:

IF %ERRORLEVEL% LEQ 1 goto okay

如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE%

将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始

命令行;否则,您会得到其数值。

如果没有名为 CMDEXTVERSION 的环境变量,

%CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的

字串符表达式;否则,您会得到其数值。

path /?

为可执行文件显示或设置一个搜索路径。

PATH [[drive:]path[;...][;%PATH%]

PATH ;

键入 PATH ; 清除所有搜索路径设置并指示 cmd.exe 只在当前

目录中搜索。

键入 PATH 但不加参数,显示当前路径。

将 %PATH% 包括在新的路径设置中会将旧路径附加到新设置。

chkdsk /?

检查磁盘并显示状态报告。

CHKDSK [volume[[path]filename]]] [/F] [/V] [/R] [/X] [/I] [/C] [/L[:size]]

volume 指定驱动器(后面跟一个冒号)、装入点

或卷名。

filename 仅用于 FAT/FAT32: 指定要检查是否有碎片的文件。 /F 修复磁盘上的错误。

/V 在 FAT/FAT32 上: 显示磁盘上每个文件的完整路径和名称。 在 NTFS 上: 如果有清除消息,将其显示。

/R 查找不正确的扇区并恢复可读信息(隐含 /F)。

/L:size 仅用于 NTFS: 将日志文件大小改成指定的 KB 数。

如果没有指定大小,则显示当前的大小。

/X 如果必要,强制卷先卸下。

卷的所有打开的句柄就会无效(隐含 /F)。

/I 仅用于 NTFS: 对索引项进行强度较小的检查。

/C 仅用于 NTFS: 跳过文件夹结构的循环检查。

/I 和 /C 命令行开关跳过卷的某些检查,减少运行 Chkdsk 所需的时间。

format /?

格式化磁盘以供 Windows XP 使用。

FORMAT volume [/FS:file-system] [/V:label] [/Q] [/A:size] [/C] [/X]

FORMAT volume [/V:label] [/Q] [/F:size]

FORMAT volume [/V:label] [/Q] [/T:tracks /N:sectors]

FORMAT volume [/V:label] [/Q]

FORMAT volume [/Q]

volume 指定驱动器(后面跟一个冒号)、装入点

或卷名。

/FS:filesystem 指定文件系统类型(FAT、FAT32 或 NTFS)。

/V:label 指定卷标。

/Q 执行快速格式化。

/C 仅适于 NTFS: 默认情况下,将压缩在该新建卷上

创建的文件。

/X 如果必要,先强制卸下卷。那时,该卷所有

已打开的句柄不再有效。

/A:size 替代默认配置单位大小。极力建议您在一般状况下使用

默认设置。

NTFS 支持 512、1024、2048、4096、8192、16K、32K、

64K。

FAT 支持 512、1024、2048、4096、8192、16K、32K、

64k,(128k、256k 用于大于 512 字节的扇区) 。

FAT32 支持 512、1024、2048、4096、8192、16k、32k、 64k,(128k 、256k 用于大于 512 字节的扇区)。

注意 FAT 及 FAT32 文件系统对卷上的群集数量有以下限制:

FAT: 群集数量

FAT32: 65526

如果判定使用指定的群集大小无法满足以上需求,格式

化将立即停止。

NTFS 压缩不支持大于 4096 的分配单元。

/F:size 指定要格式化的软盘大小(1.44)

/T:tracks 为磁盘指定每面磁道数。

/N:sectors 指定每条磁道的扇区数。

@ 与echo off相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。


相关内容

  • 黑客常用命令大全
  • Dos常用命令一: net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接 net use h: \\i ...

  • 常用文件格式大全
  • 常用文件格式大全 不同的文件,有不同的文件格式,区别这些文件格式常常是文件名的后缀名不同,现统计常用文件后缀名如下,供读者参考和查阅. BAT DOS下的批处理文件.Autoexec.bat为自动批处理文件,它是特殊的批处理文件. EXE 可执行的程序文件,与COM内部结构不相同,最突出是长度没有限 ...

  • 电脑故障大全
  • 下面是相关的故障速查与解决问题 电脑出现的故障原因扑朔迷离,让人难以捉摸.并且由于Windows操作系统的组件相对复杂,电脑一旦确地找出其故障的原因几乎是不可能的.那么是否是说我们如果遇到电脑故障的时候,就完全束手无策了呢?虽然有很多,但是,只要我们细心观察,认真总结,我们还是可以掌握一些电脑故障的 ...

  • {电脑软件知识大全}
  • 1.1电脑装机 1.1.1电脑的硬件装备 计算机的种类很多,根据其用途可以分为专用计算机和普通计算机. 专用计算机针对某类问题能显示出最有效.最快速和最经济的特性,但它的适应性比较差,不适于其他方面的应用.导弹和火箭上使用的计算机很大部分就是专用计算机. 普通计算机适应性很强,应用面很广,按其规模. ...

  • 电脑常见问题
  • 教给师傅的东西 一.电脑的个性化 1.把桌面图标的快捷方式中的小箭头去掉,使电脑个性化,更美观. (1)启动注册表编辑器(开始--运行-输入regedit ),然后依次步骤: 展开如下分支:"HKEY_CLASSES_ROOT->lnkfile": (2)删除"l ...

  • 如何使用命令提示符_大全
  • |坐忘轩 :静静坐下,淡淡忘记,血溅轩辕.主页博客相册|个人档案|好友 查看文章 如何使用命令提示符? 2007年02月06日22:32 什么是命令提示符界面?该界面为纯黑屏DOS手动输入界面,只能进行手动输入命令符,按回车键执行该命令.怎么进入命令提示符界面?方法一:开始→所有程序→运行命令→附件 ...

  • DOS批处理文件
  • DOS批处理文件 DOS下的可执行文件有三种,分别是EXE,COM和BAT.其中,EXE和COM文件都是二进制形式的,只有BAT文件是文本形式的,可以直接阅读.因 此,BAT文件和以上二进制可执行文件相比,内容要简单的多.这些文件内包含着DOS命令的集合,通常叫作批处理文件.批处理文件的组成虽然比较 ...

  • 电脑所有文件后缀名扩展名大全
  • 常见的文件后缀名 ACA Microsoft的代理使用的角色文档 acf 系统管理配置 acm 音频压缩管理驱动程序,为Windows系统提供各种声音格式的编码和解码功能 aif 声音文件,支持压缩,可以使用Windows Media Player和QuickTime Player播放 AIF 音频 ...

  • 计算机基础知识试题大全
  • 计算机基础知识试题 一.选择题 1>计算机病毒是指( B ). (A)一种可传染的细菌 (B)一种人为制造的破坏计算机系统的程序 (C)一种由操作者传染给计算机的病毒 (D)一种由计算机本身产生的破坏程序 2>第一台电脑ENIAC 诞生在 ( B ). (A)英国 (B)美国 (C)德国 ...