batch-file - 如果从批处理文件中执行“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
和工作,但是当我在批处理文件中运行它时,该命令没有删除我想要删除的文件?del
del
有没有人有这个问题的答案?谢谢迈克尔
解决方案
推荐阅读
- spring - 在 Spring 中使用 Thymeleaf 绑定列表。错误:对象验证失败
- javascript - 这行代码“var app = express()”是如何工作的?
- javascript - Google Chrome 中的 DOM 过载问题
- google-bigquery - 如何在加载到 BigQuery 时从 CSV 文件中删除页脚记录
- ubuntu - VMware - 如何在 ubuntu 虚拟机上更改共享文件夹的路径
- amazon-web-services - AWS Lambda 函数问题
- azure - 如何从 vm 中的 azure-cli 获取当前的 vm 名称/id?
- java - 如何在 java.io.PrintStream 的特定行中打印字符串
- android - 从前台服务通知中删除按钮
- javascript - 打字稿:从命令行触发“organizeImports”