我想删除除最新文件以外的其他位置的旧文件。
假设下面的位置有三个文件夹,我想删除除最新文件以外的文件。
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路径。
答案 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"
未经测试,但应该有效。与处理删除文件时一样,如果出现问题,请备份备份。