Batch file 如何在目录的每个文本文件上运行命令并删除每个文本文件?
我有一个包含5个文本文件的目录。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 是否有方法将此代码合并到批处理文件类型的循环中?这确实是一个很好的起点!另外需要注意的几点: 可以使用以下语
批处理文件应在文本文件上执行任务,然后删除该文件 是否有方法在循环中执行此操作,直到不再有文本文件 通过搜索万维网,我找到了一些计算目录中文件数量的代码,这可能是一个很好的起点
@echo off
set count=0
for %%x in (*.txt) do set /a count+=1
echo %count%
endlocal
Pause
是否有方法将此代码合并到批处理文件类型的循环中?这确实是一个很好的起点!另外需要注意的几点:
- 可以使用以下语法在循环中执行多个命令
do ( REM do things here )
- 在循环中使用变量时,必须使用
。在StackOverflow上看一看这里有大约500万个问题,关于为什么批处理中的变量没有设置在循环中DelayedExpansion
- 如果在文件上循环,则使用的参数(
)包含有关文件的重要信息。它们被列出%%x
- 您不能在该循环中使用任何
,否则它将被破坏!这包括带有goto
(通常应替换为:
)的注释REM
如需更多帮助,请查看某某和某某。还请注意,您可以使用
帮助
或/?
获得有关命令的更多信息。您可能需要一种while循环解决方案。不幸的是,在一段时间内没有内置的windows命令存在,但是您可以自己轻松地模拟它。while循环只是在条件为true时执行某些代码的循环。要计算条件,您可以使用命令。要跳回某个代码(或跳转到某个代码),可以使用命令和标签,格式为:labelName
(其他任何内容都不能与标签声明位于同一行)。要跳转到标签,您可以使用goto-labelName
,goto:labelName
甚至goto:labelName
您的while循环可以采用两种形式:
: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命令循环过来
转到:循环
:外部环路
:循环
Rem命令循环过来
Rem命令准备你的情况如果有的话,过来
如果转到:循环
请注意,在这种情况下,即使第一次不满足条件,循环也将始终至少执行一次,因为条件是在循环中执行代码之后验证的- 将
替换为准备您的条件的命令。由于条件列表仅限于,您可能需要事先准备一些变量或其他变量。在您的情况下:文件的计数 - 将
替换为您希望为真的条件。在您的情况下,这将是:
。但是考虑“ASCHIPFL的注释和使用<代码>存在”*.txt“<代码> >,它不需要任何准备,只有在有txt扩展的文件存在%count%GTR 0
时才会变为真。
- 在循环时放置所有要执行的命令,而不是
是循环后的命令必须执行的位置。该部分将在循环退出时执行
以获取/?
。输出帮助说明如何使用命令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