如何使用批处理复制修改时间之前的所有文件?
有一批文件数据,需根据文件的修改时间来复制文件,定义时间比如是在2016-12-31之前所有的文件根据文件源目录复制到指定文件夹,复制到新的文件夹需保持原有的文件夹架构。...
有一批文件数据,需根据文件的修改时间来复制文件,定义时间比如是在2016-12-31之前所有的文件根据文件源目录复制到指定文件夹,复制到新的文件夹需保持原有的文件夹架构。比如源目录是D:\123\321\1.txt.那复制过后的文件需要保持源目录相同D:\123\321\1.txt。但是只复制修改时间定义为2016-12-31号以前的。如文件夹里面有超过此时间,就会自动略过,请大神们帮帮忙。感激不尽!
展开
1个回答
展开全部
不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为xx.bat,编码选ANSI
<# :
cls
@echo off
rem 将指定目录下修改日期在指定日期之前的文件按照原来的目录结构复制/拷贝到另一个目录里
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%~dp0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$oldfolder="D:\123";
$newfolder="E:\123";
$agodate=20161231;
if(-not (test-path -liter $oldfolder)){write-host ('"'+$oldfolder+'" not found');exit;};
$files=@(dir -liter $oldfolder -recurse|?{$_ -is [System.IO.FileInfo]});
for($i=0;$i -lt $files.length;$i++){
if([int]$files[$i].LastWriteTime.toString('yyyyMMdd') -lt $agodate){
$newpath=$newfolder.trimend('\')+$files[$i].Directory.FullName.Substring($oldfolder.trimend('\').length);
$newfile=$newpath+'\'+$files[$i].Name;
if(-not (test-path -liter $newpath)){[void](md $newpath -force);};
write-host ($files[$i].FullName+' --> '+$newpath);
};
};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询