天天看点

DOS命令for

读取当前路径下的子目录:

for /d %a in (./*) do @echo %a

中文windows获取时间

for /f "tokens=1,2,3 delims=-,星" %%a in ('date /t') do set /a start = %%a%%b%%c

echo %start%

md e:\%start%

英文windows获取时间

for /f "tokens=2,3,4 delims=/ " %a in ('date /t') do @echo %c-%a-%b

删除CVS目录

for /r . %a in (.) do @if exist %a\CVS rd /s /q %a\CVS

For

对一组文件中的每个文件运行指定的命令。

语法

for {%Variable | %%Variable} in

(Set) do Command

[CommandLineOptions]

参数

{%Variable | %%Variable}

必需。代表可替换的参数。使用 %Variable 通过命令提示符执行 for 命令。使用

%%Variable 在批处理文件中执行 for 命令。变量要区分大小写,而且必须用字母值表示,例如

%A、%B 或 %C。

(Set)
必需。指定要用指定命令处理的一个或多个文件、目录、数值范围以及文本字符串。需要括号。
Command
必需。指定要对包括在指定的 (Set) 中每个文件、目录、数值范围或文本字符串所执行的命令。
CommandLineOptions
指定要与所指定命令一起使用的任何命令行选项。
/?
在命令提示符下显示帮助。

注释

  • 使用 for

    可以在批处理文件中或直接从命令提示符使用 for 命令。

  • 使用批处理参数

    下列属性适用于 for 命令:

    • for 命令用 Set 中指定的每个文本字符串替换 %Variable 或

      %%Variable,直到 Command 处理完所有文件为止。

    • For Variable 名是区分大小写、全局的,并且每次活动的总共不超过 52 个。
    • 要避免混淆批处理参数 %0 到 %9,可对 Variable 使用除数字 0 到 9

      之外的任何字符。对于简单的批处理文件,单个字符即可生效,例如 %%f。

    • 在复杂的批处理文件中可以使用多个 Variable 值来区分不同的可替换变量。
  • 指定一组文件

    Set 参数可以代表单个或多个文件组。可以使用通配符(即 * 和 ?)指定文件组。以下为有效文件组:

    (*.doc)

    (*.doc *.txt *.me)

    (jan*.doc jan*.rpt feb*.doc feb*.rpt)

    (ar??1991.* ap??1991.*)

    在使用 for 命令时,Set 中的第一个值代替 %Variable 或

    %%Variable,然后由指定的命令处理该值。这会持续到处理完与 Set

    值相对应的所有文件(或文件组)为止。

  • 使用 in 和 do 关键字

    In 和 do 不是参数,但必须将它们与 for

    一起使用。如果省略其中任何一个关键字,就会出现错误消息。

  • 使用 for 的其他格式

    如果启用命令扩展(这是默认设置),则支持 for 的下列其他格式:

    • 仅为目录

      如果 Set 包含通配符(* 和 ?),将对与 Set 相匹配的每个目录(而不是指定目录中的文件组)执行指定的

      Command。语法是:

      for /D {%% | %} Variable in

      (Set) do Command [CommandLineOptions]

    • 递归

      进入根目录树 [Drive:]Path,在树的每个目录中执行 for 语句。如果在

      /R

      后没有指定目录,则认为是当前目录。如果 Set 只是一个句点 (.),则只枚举目录树。语法是:

      for /R [[Drive :]Path] {%% |

      %} Variable in (Set) do Command

      [CommandLineOptions]

    • 迭代数值范围

      使用迭代变量设置起始值 (Start#),然后逐步执行一组范围的值,直到该值超过所设置的终止值

      (End#)。/L 将通过对 Start# 与 End# 进行比较来执行迭代变量。如果

      Start# 小于 End#,就会执行该命令。如果迭代变量超过 End#,则命令解释程序退出此循环。还可以使用负的

      Step# 以递减数值的方式逐步执行此范围内的值。例如,(1,1,5) 生成序列 1 2 3 4 5,而 (5,-1,1) 则生成序列 (5 4

      3 2 1)。语法是:

      for /L {%% | %}Variable in

      (Start#,Step#,End#) do Command

    • 迭代及文件解析

      使用文件解析来处理命令输出、字符串及文件内容。使用迭代变量定义要检查的内容或字符串,并使用各种 ParsingKeywords

      选项进一步修改解析方式。使用 ParsingKeywords 令牌选项指定哪些令牌应该作为迭代变量传递。请注意:在没有使用令牌选项时,/F

      将只检查第一个令牌。

      文件解析过程包括读取输出、字符串或文件内容,将其分成独立的文本行以及再将每行解析成零个或更多个令牌。然后通过设置为令牌的迭代变量值,调用

      for 循环。默认情况下,/F 传递每个文件每一行的第一个空白分隔符号。跳过空行。语法的不同点为:

      for /F ["ParsingKeywords"] {%% |

      %}Variable in (FileNameSet) do

      Command [CommandLineOptions]

      %}Variable in ("LiteralString") do

      %}Variable in ('Command') do

      FileNameSet 参数指定一个或多个文件名称。每个文件都将被打开、读取和处理,然后再继续执行 FileNameSet

      中的下一个文件。要覆盖默认解析行为,请指定

      "ParsingKeywords"。这是一个引号括起来的字符串,它包含一个或多个关键字以指定不同的解析选项。

      如果使用 usebackq 选项,请使用如下语法之一:

      for /F ["usebackqParsingKeywords"]

      {%% | %}Variable in ("FileNameSet")

      do Command [CommandLineOptions]

      {%% | %}Variable in ('LiteralString')

      {%% | %}Variable in ('Command') do

      下表列出可以用于 ParsingKeywords 的解析关键字。

      关键字 描述
      eol=c 指定行尾字符(仅一个字符)。
      skip=N 指定在文件的开头跳过的行数。
      delims=xxx 指定分隔符集合。这将替换空格和制表符这一默认分隔符集。
      tokens=X,Y,M-N

      指定将哪些令牌从每行传递到每个迭代的 for 正文。这样就分配了附加变量名称。M-N 格式是一个范围,指定从第

      M 个到第 N 个令牌。如果 tokens= 字符串中最后一个字符是星号

      (*),那么将分配另外的变量,并接收解析的最后一个令牌之后该行剩余的文本。

      usebackq

      指定可以使用引号引用 FileNameSet

      中的文件名,将后面带有引号的字符串作为一个命令执行,而带有单引号的字符串是文字字符串命令。

    • 变量替换

      已经增强了 for 变量引用的替换修饰符。下表列出可选语法(对于任意变量 I)。

      带有修饰符的变量
      %~I 展开 %I,删除任何前后引号 ("")。
      %~fI 将 %I 展开为完全限定的路径名。
      %~dI 只将 %I 展开到驱动器号。
      %~pI 只将 %I 展开到路径。
      %~nI 只将 %I 展开到文件名。
      %~xI 只将 %I 展开到文件扩展名。
      %~sI 展开路径只包含短名称。
      %~aI 将 %I 展开到文件的文件属性。
      %~tI 将 %I 展开到文件的日期和时间。
      %~zI 将 %I 展开到文件的大小。
      %~$PATH:I

      搜索 PATH 环境变量所列出的目录,并将 %I

      展开到第一个找到的完全限定的名称。如果没有定义环境变量名称,或通过搜索没有找到文件,则此修饰符将扩展成空字符串。

      下表列出了可用来获得复合结果的修饰符组合。
      使用组合修饰符的变量
      %~dpI 只将 %I 展开到驱动器号和路径。
      %~nxI 只将 %I 展开到文件名和扩展名。
      %~fsI 将 %I 展开到只包含短名称的完整路径名。
      %~dp$PATH:I 在 PATH 环境变量中所列出的目录中搜索 %I,并将其展开到第一个找到的驱动器号和路径。
      %~ftzaI 将 %I 展开到输出行(如 dir 一样)。
      在上述示例中,可以用其他有效值替换 %I 和 PATH。有效的 for 变量名终止 %~ 语法。
  • 解析字符串
  • 解析输出