1

我想从除了最新文件之外的不同位置删除旧文件。

假设以下位置有三个文件夹,我想从这些文件夹中删除除最新文件之外的文件。

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:\Financial\Data\Reports F:\Financial\Data\Final Reports F:\Financial\Data\Raw Reports

以上每个路径在路径末尾都有相同的文件夹(ExpensesYTD、AccountPnlMTD、ExpensesMTD..etc)。

我不想给出这样的路径。

F:\Financial\Data\Reports\ExpensesYTD F:\Financial\Data\Reports\AccountPnlMTD F:\Financial\Data\Reports\ExpensesMTD 和其余路径的相同过程。

ExpensesYTD,AccountPnlMTD,ExpensesMTD 文件夹在哪里是固定的,所以我只想在脚本中指定变量路径。

4

2 回答 2

2

时间格式的解决方法6/17/2013 2:08:00 PM,看看输出, 如果OK的话去掉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
)
于 2013-06-17T08:44:51.267 回答
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"

未经测试,但应该可以工作。与处理删除文件时一样,请准备好备份以防万一。

于 2013-06-17T08:29:33.803 回答