Batch file 如何在目录的每个文本文件上运行命令并删除每个文本文件?

Batch file 如何在目录的每个文本文件上运行命令并删除每个文本文件?,batch-file,Batch File,我有一个包含5个文本文件的目录。 批处理文件应在文本文件上执行任务,然后删除该文件 是否有方法在循环中执行此操作,直到不再有文本文件 通过搜索万维网,我找到了一些计算目录中文件数量的代码,这可能是一个很好的起点 @echo off set count=0 for %%x in (*.txt) do set /a count+=1 echo %count% endlocal Pause 是否有方法将此代码合并到批处理文件类型的循环中?这确实是一个很好的起点!另外需要注意的几点: 可以使用以下语

我有一个包含5个文本文件的目录。
批处理文件应在文本文件上执行任务,然后删除该文件

是否有方法在循环中执行此操作,直到不再有文本文件

通过搜索万维网,我找到了一些计算目录中文件数量的代码,这可能是一个很好的起点

@echo off
set count=0
for %%x in (*.txt) do set /a count+=1
echo %count%
endlocal
Pause

是否有方法将此代码合并到批处理文件类型的循环中?

这确实是一个很好的起点!另外需要注意的几点:

  • 可以使用以下语法在循环中执行多个命令

    do (
    REM do things here
    )
    
  • 在循环中使用变量时,必须使用
    DelayedExpansion
    。在StackOverflow上看一看这里有大约500万个问题,关于为什么批处理中的变量没有设置在循环中

  • 如果在文件上循环,则使用的参数(
    %%x
    )包含有关文件的重要信息。它们被列出

  • 您不能在该循环中使用任何
    goto
    ,否则它将被破坏!这包括带有
    (通常应替换为
    REM
    )的注释


如需更多帮助,请查看某某和某某。还请注意,您可以使用
帮助
/?

获得有关命令的更多信息。您可能需要一种while循环解决方案。不幸的是,在一段时间内没有内置的windows命令存在,但是您可以自己轻松地模拟它。while循环只是在条件为true时执行某些代码的循环。要计算条件,您可以使用命令。要跳回某个代码(或跳转到某个代码),可以使用命令和标签,格式为
:labelName
(其他任何内容都不能与标签声明位于同一行)。要跳转到标签,您可以使用
goto-labelName
goto:labelName
甚至
goto:labelName

您的while循环可以采用两种形式:

  • 每次先计算条件,然后执行代码(whiledo循环):循环的形式如下

    :loop
    Rem commands to prepare your condition if any come here
    <commands_prepare_condition>
    IF NOT <condition> goto :outsideLoop
    Rem commands to loop over come here
    <commands_loop>
    goto :loop
    
    :outsideLoop
    <command_after_loop>
    
    :循环
    Rem命令来准备你的情况,如果有
    如果没有转到:outsideLoop
    Rem命令循环过来
    转到:循环
    :外部环路
    
  • 每次首先在循环内执行代码,然后验证下一轮(do while循环)的条件:

    :循环
    Rem命令循环过来
    Rem命令准备你的情况如果有的话,过来
    如果转到:循环
    
    请注意,在这种情况下,即使第一次不满足条件,循环也将始终至少执行一次,因为条件是在循环中执行代码之后验证的

  • 在这两种情况中,每种情况下:

    • 替换为准备您的条件的命令。由于条件列表仅限于,您可能需要事先准备一些变量或其他变量。在您的情况下:文件的计数

    • 替换为您希望为真的条件。在您的情况下,这将是:
      %count%GTR 0
      。但是考虑“ASCHIPFL的注释和使用<代码>存在”*.txt“<代码> >,它不需要任何准备,只有在有txt扩展的文件存在

    • 时才会变为真。
    • 在循环时放置所有要执行的命令,而不是

    • 是循环后的命令必须执行的位置。该部分将在循环退出时执行


    打开命令提示符窗口并运行
    以获取/?
    。输出帮助说明如何使用命令FOR对目录中的文件、数字文件或从某处读取的各种字符串执行操作

    您可以使用以下命令执行简单任务:

    @echo off
    for %%I in (*.txt) do (
        echo File: "%%~fI"
        echo del "%%~fI"
    )
    pause
    
    FOR命令块中的第一行替换为命令ECHO,命令行用于找到的*.txt文件,该文件的名称由区分大小写的循环变量
    I
    保留

    如果批处理文件按预期工作,请删除命令块第二行上的
    echo


    注意:此批处理文件只输出每个找到的*.txt文件的名称和完整路径,以及用于删除*.txt文件而不进行删除的命令行。

    要确定是否还有
    .txt
    文件,可以使用
    如果不存在“*.txt”…
    而不是计算文件。。。
    @echo off
    for %%I in (*.txt) do (
        echo File: "%%~fI"
        echo del "%%~fI"
    )
    pause