如何从该位置删除旧文件

时间:2013-06-17 07:50:23

标签: batch-file

我想删除除最新文件以外的其他位置的旧文件。

假设下面的位置有三个文件夹,我想删除除最新文件以外的文件。

F:\Financial\Data\Reports\ExpensesYTD  

在文件夹下面的文件中,我要删除所有除外 Expenses.05312013(文件名是变量)

Expenses.01312013
Expenses.02282013
Expenses.03312013
Expenses.04302013
Expenses.05312013

其他人也一样。

F:\Financial\Data\Reports\AccountPnlMTD
F:\Financial\Data\Reports\ExpensesMTD

新编辑:

F:\金融\数据\报告 F:\ Financial \ Data \ Final Reports F:\ Financial \ Data \ Raw Reports

每条Above路径在路径末尾都有相同的文件夹(ExpensesYTD,AccountPnlMTD,ExpensesMTD..etc)。

我不想给这样的路径。

F:\金融\数据\报告\ ExpensesYTD F:\金融\ DATA \报告\ AccountPnlMTD F:\金融\ DATA \报告\ ExpensesMTD 和其余路径的过程相同。

在哪里是ExpensesYTD,AccountPnlMTD,ExpensesMTD文件夹是固定的,所以我想在目录中只有dirribe的varibales路径。

2 个答案:

答案 0 :(得分:2)

6/17/2013 2:08:00 PM时间格式的解决方案,如果正常,请查看输出并删除echo之前的单词del

@echo off &SETLOCAL
for %%i in (
    "F:\Financial\Data\Reports\ExpensesYTD"
    "F:\Financial\Data\Reports\AccountPnlMTD"
    "F:\Financial\Data\Reports\ExpensesMTD"
    ) do (
    PUSHD "%%~i"
    for /f "tokens=4* skip=1" %%j in ('dir /a-d /O-D /TC /-C ^| findstr "^[0-9]"') do echo del "%%~k"
    POPD
)

答案 1 :(得分:0)

注意:根据控制台设置,这可能会对Unicode文件名产生并发症。考虑自己警告。

您可以使用

获取按创建日期排序的文件列表
dir /B /TC /O-D F:\Financial\Data\Reports\ExpensesYTD

然后你可以用for迭代它并删除每一个,跳过第一个(最新的):

for /f "usebackq skip=1 delims=" %%F in (`dir /B /TC /O-D F:\Financial\Data\Reports\ExpensesYTD`) do del "%%F"

未经测试,但应该有效。与处理删除文件时一样,如果出现问题,请备份备份。