繁体   English   中英

删除目录中除一个子目录中的所有文件

[英]Delete all files in directory except in one subdirectory

我有这个脚本:

    forfiles /p "C:\Hello" /m *.* /s /d -5 /c "cmd /c if /i not @path==C:\Hello\Dontdelete del @file"

我正在尝试删除C:\\ Hello中所有超过5天的文件,但C:\\ Hello \\ Dontdelete或此路径内的任何目录中的文件除外。

目前,当我使用上述脚本时,所有内容都会被删除。

谢谢!

我对此了解不多,但是我认为您应该每5天进行一次检查,脚本会检查文件夹C中是否有文件:/ Hello,如果是,则脚本清除,如果没有,它什么也没做。 搜索它。

根本的问题是@path完整路径名-包括文件名+扩展名,并且用引号引起来,而@file是文件名+扩展名(也用引号引起来)。 结果,构造的if语句无法按预期工作。

这是一种使其正常工作的方法(我做了一些更改以适合我的系统,应该易于操作以适合您的系统)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
forfiles /p "%sourcedir%" /m *.* /s /d -6 /c "cmd /c call %cd%\selectdel @PATH"
GOTO :EOF

我在当前目录selectdel设置为一个批处理。 毫无疑问,这会很好,或者像我对%cd%\\那样强制使用。

selectdel.bat

@echo off
setlocal
if /i not "%~dp1"=="%sourcedir%\Dontdelete\" echo DEL %1
GOTO :eof

显然,我只是echodel命令-如果发生事故...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM