我在Windows上有大量目录+包含文件的子目录。 在Windows命令行(或通过脚本)我想比较两个文件夹并从子文件夹中删除不在主文件夹中的文件。
在下面的示例中,应从子文件夹中删除偶数文件。
folder: C:\folder1
file1.jpg
file3.jpg
file4.jpg
file7.jpg
file9.jpg
subfolder: C:\folder1\RAW\
file1.CR2
file2.CR2
file3.CR2
file4.CR2
file5.CR2
file6.CR2
file7.CR2
file8.CR2
file9.CR2
我已经尝试了几个我在这里找到的脚本,但没有他们完成这项工作。任何帮助表示赞赏!
答案 0 :(得分:2)
@echo off
setlocal enableextensions disabledelayedexpansion
set "folder=c:\folder1\raw"
for %%a in ("%folder%\*") do (
dir /a-d "%%~dpa..\%%~na.*" >nul 2>&1 || echo del "%%~fa"
)
对于指定文件夹中的每个文件,如果父文件夹中不存在具有相同名称的文件,则从子文件中删除dir
命令而不是if exists
以避免误报与文件夹名称)
删除操作仅回显给控制台。如果输出正确,请删除echo
命令
答案 1 :(得分:1)
感谢大家的投入,感谢您的投入,我想出了一个解决方案。它在命令行上使用时非常完美(Windows当然)。
删除前查看列表:
for %F in ("C:\folder1\RAW\*.CR2") do @if not exist "C:\folder1\%~nF.jpg" echo del "%F"
要删除,请删除' echo'
for %F in ("C:\folder1\RAW\*.CR2") do @if not exist "C:\folder1\%~nF.jpg" del "%F"
希望这对一些人也有用!