如何使用批处理复制修改时间之前的所有文件?

有一批文件数据,需根据文件的修改时间来复制文件,定义时间比如是在2016-12-31之前所有的文件根据文件源目录复制到指定文件夹,复制到新的文件夹需保持原有的文件夹架构。... 有一批文件数据,需根据文件的修改时间来复制文件,定义时间比如是在2016-12-31之前所有的文件根据文件源目录复制到指定文件夹,复制到新的文件夹需保持原有的文件夹架构。比如源目录是D:\123\321\1.txt.那复制过后的文件需要保持源目录相同D:\123\321\1.txt。但是只复制修改时间定义为2016-12-31号以前的。如文件夹里面有超过此时间,就会自动略过,请大神们帮帮忙。感激不尽! 展开
 我来答
qop_dob
2021-04-08 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:3968万
展开全部

不清楚你的实际文件/情况,仅以问题中的样例/说明为据
复制粘贴到记事本,另存为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);
    };
};
追问

在WINDOWS SERVER 2012服务器上是拒绝访问,请问还要更改哪的设置吗?大神

追答
按运行后窗口中的提示联系我
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式