首页 > 解决方案 > 如果从批处理文件中执行“del”命令,它不会删除名称包含奇数字符的文件。但它可以在 CMD shell 中工作

问题描述

问题:“del”命令在从批处理文件执行时不会删除某些文件,但如果从 CMD shell 命令行解释器执行,它将删除这些文件。该问题似乎与文件名包含省略号字符的事实有关。

我对批处理文件并不陌生,自 1988 年以来,我一直在通过 Windows 7 使用 MSDOS 3.2 编写和使用批处理文件。现在我使用的是 Windows 10 Pro 21H1。以下是对问题的描述。

目录列表dir显示该文件夹包含以下五个文件:

Volume in drive E has no label.
 Volume Serial Number is 3D74-5A3F

Directory of E:\Backups\Magpie\2016-12-14-P\mike\Correspondence\Friends\Berg\In

10/21/2021  03:27 PM    <DIR>          .
10/21/2021  03:27 PM    <DIR>          ..
08/16/2021  03:15 AM            40,888 20160114-Fwd_ [New post] Biologist's comments to save White Mountain & Little Colorado wild horses (Today is the last day YOU can comment)-29324528.eml
08/16/2021  03:15 AM            21,095 20160229-More.-13257179.eml
08/16/2021  03:15 AM            47,526 20160229-Re_More…-13334902.eml
08/16/2021  03:15 AM        11,256,759 20160819-(Duplicate) Whew. Re_ Good thurs am God bless your first day back to work-10.eml
10/21/2021  02:48 PM               182 DeleteDuplicatesDC.bat
10/20/2021  06:19 PM    <DIR>          Photos
10/21/2021  02:00 PM    <DIR>          Temp

               6 File(s)     11,366,450 bytes
               4 Dir(s)  199,814,967,296 bytes free

我想删除名称为的第三个文件20160229-Re_More…-13334902.eml 注意文件名中单词后面的三个点More。它是一个省略号字符。它不是三个单独的点。

批处理文件是由我编写的一个宏生成的,用于汇编指令以删除成百上千个满足特定条件的单个文件。

我的批处理文件有以下命令:

Echo   271
CD "E:\Backups\Magpie\2016-12-14-P\mike\Correspondence\Friends\Berg\In\"
del "20160229-Re_More…-13334902.eml"
Echo   271

Echo 命令只是在屏幕上写入一个数字来显示批处理文件的进度。批处理文件包含数百个类似的行,这些行删除了各个目录中的数百个文件。当我运行批处理命令时,它删除了它应该删除的大部分文件,但它不会删除该文件: 20160229-Re_More…-13334902.eml

为了检查命令是否有效和正确,我使用以下步骤从命令行一次运行一个。在 CMD shell CLI(命令行解释器)中,我复制粘贴了命令

CD "E:\Backups\Magpie\2016-12-14-P\mike\Correspondence\Friends\Berg\In\"

从批处理文件到 CMD 命令行 shell 并执行它。它把我带到了正确的目录,它是 E:\Backups\Magpie\2016-12-14-P\mike\Correspondence\Friends\Berg\In\.

然后我将以下命令从批处理文件复制粘贴到 CMD shell 中以删除该文件:

del "20160229-Re_More…-13334902.eml"

并执行它。该del命令成功删除了文件(正如它应该做的那样)。该文件也从我打开以监视进度的文件资源管理器窗口中消失了。

这个测试表明,这两个命令做了它们应该做的事情,即移动到某个目录(文件夹)并删除某个文件。

但是del当我从批处理文件中执行该命令时,该命令并没有删除带有省略号字符的文件。当我从 CMD shell CLI 单独执行这些命令时,我不明白为什么这些命令cd和工作,但是当我在批处理文件中运行它时,该命令没有删除我想要删除的文件?deldel

有没有人有这个问题的答案?谢谢迈克尔

标签: batch-filedel

解决方案



推荐阅读