加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 按修改日期移动文件的批处理文件

发布时间:2020-12-14 02:09:27 所属栏目:Windows 来源:网络整理
导读:我写了一个批处理文件,为每个日期创建空文件夹.我的下一个任务是根据修改日期创建另一个批处理文件,该文件将目录中的每个文件移动到相关的日期文件夹中.我已经阅读了很多关于如何实现这一目标的论坛和文章,但由于我有限的批处理文件知识,我似乎无法让它工作.
我写了一个批处理文件,为每个日期创建空文件夹.我的下一个任务是根据修改日期创建另一个批处理文件,该文件将目录中的每个文件移动到相关的日期文件夹中.我已经阅读了很多关于如何实现这一目标的论坛和文章,但由于我有限的批处理文件知识,我似乎无法让它工作.我目前拥有的代码如下所示,尽管这似乎没有提到修改日期.任何帮助深表感谢!

SET directory="directorypatharchive"

FOR /f %%a in ('dir /b "%directory%"') do (

SET fdate=%%~Ta

MOVE "%directory%%%a" "%directory%%fdate%"

解决方法

在您提供有关日期格式的更多信息之前,我无法给出明确的答案.但我可以告诉你如何在我的机器上做到这一点.

我在文件和文件夹名称中使用yyyy-mm-dd格式,因此2011年12月13日将是2011-12-13.我的机器使用mm / dd / yyyy格式表示日期(12/13/2011).所以我需要将2011年12月13日的%% ~tF输出翻译成2011-12-13.注 – /不能用于文件或文件夹名称.

所以这段代码可以在我的机器上做你想要的:

set "source=directorypatharchive"
set "targetRoot=directorypatharchive"
for %%F in ("%source%*") do (
  for /f "tokens=1,2,3 delims=/ " %%A in ("%%~tF") do (
    move "%%~fF" "%targetRoot%%%C-%%A-%%B"
  )
)

附录 – 评论中的问题询问左侧填充数字的方法,用于创建目录.我看到两个简单的选择. (这应该是一个不同的问题)

第一种方法虽然简单但繁琐,但作为一般解决方案并不实用

for %%A in (01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31) do ...

第二种方法是一般解决方案.由于您的作业在括号内,因此您需要使用延迟扩展.

setlocal enableDelayedExpansion
for /l %%A in (1 1 31) do (
  set "day=0%%A"
  set "day=!day:~-2!
  ...
)

通过在前面添加更多0然后增加在子字符串操作中保留的字符数来增加前导零的数量.

但是 – 为什么预先填充目录?您的策略将添加日历中不存在的目录日期,此外您可能还有许多未使用的文件夹,当天没有修改任何文件.最好只根据需要创建文件夹.然后为您完成了0填充,并且没有创建不需要的文件夹.

set "source=directorypatharchive"
set "targetRoot=directorypatharchive"
for %%F in ("%source%*") do (
  for /f "tokens=1,3 delims=/ " %%A in ("%%~tF") do (
    if not exist "%targetRoot%%%C%%A%%B" mkdir "%targetRoot%%%C%%A%%B"
    move "%%~fF" "%targetRoot%%%C%%A%%B"
  )
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读