【问题标题】:Batch Script to delete only files with .zip extension仅删除扩展名为 .zip 的文件的批处理脚本
【发布时间】:2018-09-05 09:54:24
【问题描述】:

我想跳过最新的3 files createddelete the rest of the files。我需要的是,如果有文本、xml 和 zip 文件,我们只需要删除 zip 文件并将文本和 xml 文件留在后面,剩下的文件总数应该是 3。如果除了 .zip 之外还有 3 个或更多文件文件,删除所有 .zip 文件;如果数量较少,请保留最新的 .zip 文件,以便总共剩下 3 个文件。任何人都可以帮忙。我被这个困住了

例如(括号内的文件创建日期): Folder A contains - aa.txt(2/1/18), bb.xml(3/1/18), cc.zip(4/1/18), dd.zip(2/1/18),ee.zip(5/1/18)

删除后我需要的是 aa.txt, bb.xml, ee.zip

这是我写的

@ECHO OFF
SETLOCAL
SET "targetdir=C:\source"
SET /a retain=3

FOR /f "skip=%retain%delims=" %%a IN (
 'dir /b /a-d /o-d "%targetdir%\*.zip" '
 ) DO DEL (DEL "%targetdir%\%%a.zip"

GOTO :EOF

【问题讨论】:

  • 如果扩展名不是.zip的文件超过3个怎么办?
  • 需要保留所有文件@aschipfl
  • 所以基本上,如果除了.zip文件之外还有3个或更多文件,删除所有.zip文件;如果数量较少,请保留最新的.zip 文件,以便总共剩下 3 个文件。这正是你想要的,对吗?请edit您的问题相应!

标签: windows batch-file scripting


【解决方案1】:

鉴于您的问题的参数,一个非常简单的方法,虽然不是最有效或最快的,将是这样做:

@Echo Off
Set "targetdir=C:\source"
Set "retain=3"
CD /D "%targetdir%" 2>Nul || Exit /B
For /F "Skip=%retain% Delims=" %%A In ('Dir /B/A-D/O-D/TC'
) Do If /I "%%~xA"==".zip" Del "%%A"

【讨论】:

  • 我没有得到这个 sir@Compo 的解决方案
  • @Reenu,你需要试着更好地解释你需要什么。我的理解和这段代码删除了%targerdir% 中的所有.zip 文件,除了该目录中最近在3 中列出的任何created 文件。
  • 我试过这个先生。我什至无法删除 zip 文件@Compo
  • @Reenu,我在不改变意图的情况下对代码进行了修改。
  • Not able to delete 不能充分帮助我或其他任何人相应地调试或修改代码。请通过删除我的脚本的第一行并通过在命令提示符下键入其完整路径来运行它,从而更好地解释正在发生或未发生的事情。
猜你喜欢
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 2019-10-18
相关资源
最近更新 更多