【问题标题】:delete older files who exist in another directory?删除另一个目录中存在的旧文件?
【发布时间】:2013-11-26 18:19:46
【问题描述】:

我有两个文件夹,它们的文件和文件夹几乎相同。

我想合并它们并删除文件夹A中所有与文件夹B相同的文件(相同日期或更早)

有人已经问过Here 只是删除文件而不检查日期。

我想要类似的东西,但只有在年龄相同或更大时才应删除。

谢谢

【问题讨论】:

  • 你试过robocopy吗?
  • 我只想删除,而不是复制。可以用 robocopy 完成吗?
  • 是的,但我想我知道更好的方法,请稍等
  • 我使用 robocopy 将旧驱动器复制到新驱动器,但没有使用 /MOV,现在驱动器已满。需要清理一下才能继续。

标签: windows batch-file filesystems xcopy robocopy


【解决方案1】:

试试这个:

@echo off&setlocal enabledelayedexpansion
pushd "%~dp0"


for /f %%i in ('dir /b a') do (call:CmpFTime LSS "a\%%~ni" "b\%%~ni"&&del "a\%%~ni")


:CmpFTime
SETLOCAL
set op=%~1
set fileL=%~2
set fileR=%~3
set attrL=%~4
set attrR=%~5
if "%op%"=="" set op===
if "%attrL%"=="" set attrL=/tw
if "%attrR%"=="" set attrR=%attrL%
for /f "tokens=1-6 delims=/: " %%a in ('"dir %attrL% /-c "%fileL%"|findstr "^^[0-1]""') do (
    set TL=%%c%%a%%b%%f%%d%%e
)
for /f "tokens=1-6 delims=/: " %%a in ('"dir %attrR% /-c "%fileR%"|findstr "^^[0-1]""') do (
    set TR=%%c%%a%%b%%f%%d%%e
)
if "%TL%" %op% "%TR%" (rem.) ELSE set=2>NUL
EXIT /b

如果这包含任何错误,请随时发表评论,我会尽力修复它们。我用 a 代替了文件夹 a,用 b 代替了文件夹 b。

【讨论】:

  • 我没有尝试过,因为当时我需要快速修复并最终做了其他事情。无论如何,谢谢你,但我没有测试代码。
猜你喜欢
  • 1970-01-01
  • 2015-12-06
  • 2023-01-07
  • 2021-01-22
  • 2020-01-27
  • 2018-03-19
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多