批量移动目录取决于修改日期

时间:2014-06-13 16:10:34

标签: batch-file

我有一个像这样的子目录:
c:\ dir1 \ sub(1)
c:\ dir1 \ sub(2)
c:\ dir1 \ sub(n)

如果缺少特定文件,我想在另一个路径中移动最新的子目录(sub(n))。

这是我的脚本,但我无法检索最新子目录的名称:

set REPdst=C:\dir2
set REPsrc=C:\dir1

IF not exist %REPdst%\index.htm (FOR /f %%f in ('dir /tw %REPsrc% ') DO (
    echo %%f
))

我不知道如何只检索每个子目录的修改日期以便比较它们或获取子目录的索引(括号之间的数字)

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

我认为这样可以回答你的问题

http://ss64.com/nt/xcopy.html

xcopy "c:\dir1\sub (n)" "c:\dir1\sub (1)" /D /E -Y /C /Z  
  • / D只会让它更换它,如果它早于源的

  • / E将替换文件夹和子文件夹

  • -Y会使其无法提示您进行覆盖

这些不是你需要的,但很高兴在那里。

  • / C即使出现错误也会继续

  • / Z将使其以可重新启动模式复制文件。如果副本中途中断,则会重新启动 可能

答案 1 :(得分:0)

dir有一些有用的参数:/ad将仅列出目录(Attribute Directroy),/od将对日期(订单日期)进行排序。

组合它:dir /b /ad /od %REPsrc%将列出所有子目录(首先是oldes)

获取最后一个(当前修改最多的):

for /f %%i in ('dir /b /ad /od %REPsrc%\sub*') do set lastdir=%%i

(注意:这不一定是具有最大数字的那个)

要获得编号最高的编号,请按字母顺序对其进行排序(dir /b /ad /on %REPsrc%\sub*

注意:如果n大于9,则会失败。

(注意:这不是最后修改的那个)