怎么用bat写出指定文件夹下几天前的所有文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用bat写出指定文件夹下几天前的所有文件相关的知识,希望对你有一定的参考价值。
@echo off
::设置目标文件夹
set m=E:\123
del "%m%\*" /f /s /q /a
for /f "delims=" %%i in ('dir /ad /w /b "%m%"') do (
rd /s /q "%m%\%%i"
)
这样的可以删除指定文件夹下的所有文件,但是不能指定时间。求大神们帮帮忙
请先备份再测试
@echo offset "f_p=e:\\123"
set/a n=90
rem 计算前n天日期,闰年按简单4年一闰计 ---- yyykkkyyyy
echo.
set/a y=%date:~,4%,m=1%date:~5,2%-100,d=1%date:~8,2%-100
set/a d-=n,"1/(-d>>31)" 2>nul&&goto :ok
:loop
set/a m-=1,d+=31,y-=!m,m+=!m*12
set/a "d-=!(m-2)*(3-!(y&3))+!(m-4)+!(m-6)+!(m-9)+!(m-11)"
if %d% leq 0 goto :loop
:ok
set/a m+=100,d+=100
set "d_n=%y%-%m:~1%-%d:~1%"
echo 本批处理继续执行将删除%f_p%下%d_n%日及之前的文件
set/p=否则请关闭此窗口!按任意键将开始删除... <nul
pause>nul
cls
cd/d "%f_p%"
echo 正在删除文件
for /r %%i in (*)do if "%%~ti" lss "%d_n%9" del "%%i"&echo %%i
echo;
for /f "delims=" %%i in ('dir/b/s/ad^|sort/r')do (
rd "%%i" 2>nul&&echo 删除文件夹%%i)
pause>nul追问
牛逼 ,厉害。谢谢,就采纳你了。
参考技术A 来个简单一点的:假如需要处理的文件夹路径为:D:\Personal\Desktop\空白记录表\,且只删除两天前的文件(-2即代表2天前),那么:
@echo off
forfiles /p D:\Personal\Desktop\空白记录表\ /s /m *.* /d -2 /c "cmd /c del @file /f"
exit
试用前请备份。 参考技术B rem 指定待删除文件的存放路径
set SrcDir=C:\Test\BatHome
rem 指定天数
set DaysAgo=1
for /f "delims=" %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do (
set "RegDateOld=%%a"
)
set RegDateOld=%RegDateOld:~-8%
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
>"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
>>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
>>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
set "DstDate=%%a"
)
set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
for /r "%SrcDir%" %%a in (*.*) do (
if "%%~ta" leq "%DstDate%" (
if exist "%%a" (
echo del /f /q "%%a"
)
)
)
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d %RegDateOld% /f>nul
pause 参考技术C 谨慎!
很容易出错的
bat批处理复制N天前的文件夹及里面的文件到其他目录?
根据当天日期,将N天前的文件夹及里面的文件复制到另一个盘符目录,例如下图将25天前的这几个文件夹及里面的文件放在其他目录
参考技术A不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
<# :cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 将一个指定目录里指定天数以前以日期命名的子文件夹拷贝/复制到另一个指定目录里
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$ago=-25;
$oldfolder="D:\\xxx\\RecordFile";
$newfolder="E:\\yyy\\newfolder";
if(-not (test-path -literal $oldfolder))write-host ('"'+$oldfolder+'" Path Error Or Not Existed');exit;
$b=[Convert]::FromBase64String("IC0tPiA=");
$c=[Text.Encoding]::Default.GetString($b);
$agodate=(get-date).AddDays($ago).ToString('yyyyMMdd');
write-host ('0 days ago=1' -f [Math]::Abs($ago),$agodate);
$folders=@(dir -literal $oldfolder|?($_.Name -match '^\\d8$') -and ($_ -is [System.IO.DirectoryInfo]));
for($i=0;$i -lt $folders.length;$i++)
if($folders[$i].Name -le $agodate)$folders[$i].FullName+$c+$newfolder;
追问
大佬,运行完成并没复制过去
按运行后窗口标题栏中的提示联系我
以上是关于怎么用bat写出指定文件夹下几天前的所有文件的主要内容,如果未能解决你的问题,请参考以下文章