2013-09-27 27 views
1

定期在执行备份和对数据表执行维护之前,我正试图清理ERP程序的一些数据文件夹。我一直在使用Windows资源管理器在完全备份之前搜索无关的备份和临时文件(维护过程在过程中创建的备份文件并不总是被删除),但是我想直接运行它批处理文件可以简化并加快处理过程。我过滤下列要求:。命令提示符通配符文件删除错误地匹配

* NGT ????????????老
* WRK * ???????????? M4T

另外,我使用的命令:
DEL/S/Q

这些都完美地工作,但内部资源管理器的搜索功能。第一个在命令提示符下正常工作,但第二个没有。这个系列由ERP软件创建,作为时间戳,以指示当时创建的原件的副本。第二个*表示一个或两个字符的用户标识,表示创建该文件的用户(除了字符长度不一定相同外,并不重要)。当我尝试使用第二个过滤器在命令提示符中进行过滤时,它不仅抓取我想要的文件,而且还抓取原始源文件,其中不对有时间戳。例如,以下文件名:

文件1)AR_AgedInvoiceReportWrk.M4T
文件2)AR_AgedInvoiceReportWrkTB081615903027.M4T

文件2是应该被删除的只有一个,但它会同时删除文件1和文件2.我甚至尝试过使用两个或三个而不是第二个,只是为了看看是否会出现差异,但事实并非如此。

命令提示符不能识别? Explorer的方式呢?我错过了什么?

+0

“命令提示符不能识别Explorer的方式吗?”简短的回答是否定的。首先阅读:[通配符如何在MS-DOS中工作?](http://blogs.msdn.com/b/oldnewthing/archive/2007/12/17/6785519.aspx)并记住Cmd.exe模式匹配是向后兼容的。 –

+0

忘了提及这个:[为什么FindFirstFile找到短名称?](http://blogs.msdn.com/b/oldnewthing/archive/2005/07/20/440918.aspx)。我可以建议的最佳解决方法是使用PowerShell,而不受这些向后兼容性怪异的影响。 –

回答

2

DIR,它似乎其他工具匹配短文件名和长文件名。你的短文件名有wrk作为主角,然后你匹配任何字符的整个赃物。

解决方案是使用类似DIR /b /a-d的东西,并通过findstr用正则表达式管理它,并且只匹配长文件名。

+0

我编辑了上面的文字,但是一开始没有任何“Wrk”。 “Wrk”总是在短文件名的末尾。它并没有区分长短的形式。但是这里有一个东西......有一个包含子目录的根目录,所有这些文件都在子目录中。这个方法可以进入子目录吗? –

+0

当然,如果您更改问题filespec掩码,那么'wrk'不会在前面。如果您正确地说明任务,那么您可能会得到适当的批处理解决方案。有很多熟练的人在这里阅读,喜欢解决任务。 – foxidrive