我有这个脚本:
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中的文件或此路径中的任何目录除外。
目前,当我使用上述脚本时,所有内容都会被删除。
谢谢!
答案 0 :(得分:0)
我不太了解它,但我认为你应该每5天做一次,我们会检查文件夹中是否有文件C:/ Hello,如果是,脚本会清除,如果没有,它什么都不做。搜索一下。
答案 1 :(得分:0)
根本问题是@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
命令 - 如果发生意外......