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

时间:2014-07-08 17:38:44

标签: windows scripting cmd command-prompt

我有这个脚本:

    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中的文件或此路径中的任何目录除外。

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

谢谢!

2 个答案:

答案 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命令 - 如果发生意外......