wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows – 按修改日期移动文件的批处理文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我写了一个批处理文件,为每个日期创建空文件夹.我的下一个任务是根据修改日期创建另一个批处理文件,该文件将目录中的每个文件移动到相关的日期文件夹中.我已经阅读了很多关于如何实现这一目标的论坛和文章,但由于我有限的批处理文件知识,我似乎无法让它工作.我目前拥有的代码如下所示,尽管这似乎没有提到修改日期.任何帮助深表感谢! SET directory="\directory\path\archive"
我写了一个批处理文件,为每个日期创建空文件夹.我的下一个任务是根据修改日期创建另一个批处理文件,该文件将目录中的每个文件移动到相关的日期文件夹中.我已经阅读了很多关于如何实现这一目标的论坛和文章,但由于我有限的批处理文件知识,我似乎无法让它工作.我目前拥有的代码如下所示,尽管这似乎没有提到修改日期.任何帮助深表感谢!

SET directory="\directory\path\archive"

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=\directory\path\archive"
set "targetRoot=\directory\path\archive"
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=\directory\path\archive"
set "targetRoot=\directory\path\archive"
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"
  )
)

大佬总结

以上是大佬教程为你收集整理的windows – 按修改日期移动文件的批处理文件全部内容,希望文章能够帮你解决windows – 按修改日期移动文件的批处理文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: