大佬教程收集整理的这篇文章主要介绍了windows – 按修改日期移动文件的批处理文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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,请注明来意。