[英]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
显然,我只是echo
了del
命令-如果发生事故...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.