命令行比较两个文件列表并删除在两个列表上显示的文件



在Windows 7中,我有一个文件夹,其中包含以下文件:

a.txt
b.txt
c.txt

还有另一个文件夹包含以下文件:

b.txt
c.txt
d.txt

我想使用命令行从folder2中删除文件 b.txtc.txt,这些文件显示在两个列表中。我了解如何使用for /f生成文件列表。我不知道如何在for /f中进行另一个循环,以便我可以删除文件。

我不确定您是说是否要文件b.txt和c.txt从两个文件夹中删除,还是一个。以下批处理文件将从文件夹中删除它们。

@echo off
setlocal
set folder1=name_of_your_first_folder
set folder2=name_of_your_second_folder
for %%f in (%folder1%*) do (
    if exist %folder2%%%~nxf echo del %folder2%%%~nxf
)
rem remove echo from above once satisfied it will do the right thing

取决于您的外壳和操作系统。如果您正在使用bash,那么我会认为这样的事情:

#!/bin/bash
folder1=a
folder2=b
for f in $folder1/*.txt; do
    g=`basename $f`
    if [ -f $folder2/$g ]; then
        echo "remove $folder2/$g"
    else
        echo "not in $folder2 $g"
    fi
done

最新更新