如何删除父文件夹中与指定子文件夹中文件名相同的所有文件?

时间:2017-12-05 08:22:16

标签: batch-file command-line command-prompt

我是批处理文件写作的新手 这是父文件夹Folder1的当前内容:

C:\Folder1\Subfolder1
C:\Folder1\Afile001.txt
C:\Folder1\Bfile002.txt
C:\Folder1\Cfile003.txt
C:\Folder1\Xfile004.txt
C:\Folder1\Yfile005.txt

此文件夹中的文件数量会不时增加。

我需要Folder1中的当前文件列表,然后将它们复制到Subfolder1,这是通过使用命令copy *.txt Subfolder1实现的。

接下来,Subfolder1中的文件由某个进程获取(或复制),然后父Folder1的内容更改为:

C:\Folder1\Subfolder1
C:\Folder1\Afile001.txt
C:\Folder1\Bfile002.txt
C:\Folder1\Cfile003.txt
C:\Folder1\Xfile004.txt
C:\Folder1\Yfile005.txt
C:\Folder1\Dfile001.txt
C:\Folder1\Efile002.txt
C:\Folder1\Ffile003.txt
C:\Folder1\Gfile004.txt
C:\Folder1\Hfile005.txt

如何实现一个批处理文件,该文件从Subfolder1获取文件列表并使用该列表删除Folder1中具有相同名称的文件,并仅留下该文件夹中的新文件?

所以结果应该是Folder1

C:\Folder1\Subfolder1
C:\Folder1\Dfile001.txt
C:\Folder1\Efile002.txt
C:\Folder1\Ffile003.txt
C:\Folder1\Gfile004.txt
C:\Folder1\Hfile005.txt

1 个答案:

答案 0 :(得分:0)

只需使用命令 FOR DEL ,只需一个命令行就可以完成:

@echo off
for %%I in ("C:\Folder1\Subfolder1\*.txt") do del "C:\Folder1\%%~nxI" 2>nul

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • del /?
  • echo /?
  • for /?

另请阅读Microsoft文章Using Command Redirection Operators,了解2>nul解释 DEL 输出的错误消息,以便通过重定向处理 STDERR 设备 NUL 如果C:\Folder1\Subfolder1中的* .txt文件在C:\Folder1中不再存在。

顺便说一下:也可以使用命令

move /Y C:\Folder1\*.txt C:\Folder1\Subfolder1\

将文件从C:\Folder1移至C:\Folder1\Subfolder1,而不是先将其复制,然后再将其删除。