中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何将目录A存取时间超过30天的档案,move到B目录
作者:
标题: [求助]如何将目录A存取时间超过30天的档案,move到B目录 上一主题 | 下一主题
pdanniel66
初级用户





积分 68
发帖 64
注册 2009-5-23
状态 离线
『楼 主』:  [求助]如何将目录A存取时间超过30天的档案,move到B目录

[求助]如何将目录A(含子目录与档案),存取时间超过30天的档案,move到B目录,B目录仍需有与A相同的子目录结构,原A子目录架构仍保留。
搜索讨论区仍没找到解答
http://www.cn-dos.net/forum/view ... &highlight=move

2010-7-7 07:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pdanniel66
初级用户





积分 68
发帖 64
注册 2009-5-23
状态 离线
『第 2 楼』:  

请大家帮帮忙 ! 谢谢!

2010-7-10 06:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xiaohacker
初级用户




积分 110
发帖 45
注册 2007-1-7
状态 离线
『第 3 楼』:  帮你顶起来,围观你

这种帖子应该很多的,你在论坛仔细搜搜,肯定有。。。。。



我不当老大谁当老大。。。
2010-7-12 11:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pdanniel66
初级用户





积分 68
发帖 64
注册 2009-5-23
状态 离线
『第 4 楼』:  

(1) 以下是我测试的code , 初步测试可行,但须第三方
(2) 请各位可否精简,不要暂存档,谢谢 !
del 2.bat
del 3.bat
call robocopy-01.bat
call move-01.bat >> 2.bat
call change01.bat
call rep-string02.bat
ping 127.1 -n 3 > nul
start 3.bat
robocopy-01.bat (复制目录架构,不含档案,robocopy是微软工具 ) :

robocopy d:\temp02 D:\Temp1\test\test99 /e /lev:50 /minage:19000101

move-01.bat (修改cn-dos的 delete sample 为move):
@echo off
::演示:echo move 指定路径下指定天数之前(以档的最后修改日期为准)的档。
::如果演示结果无误,把move前面的echo去掉,即可实现真正删除。
::本例调用了临时VBS代码进行日期计算,并统一设置系统日期格式,处理完毕
::之后再把日期格式恢复成原来的状态。摆脱了对reg命令(XP系统自带)的依赖。

rem 指定待move文件的存放路径
set SrcDir=D:\temp02
rem 指定天数
set DaysAgo=30
>"%temp%\BackupDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\BackupDate.vbs" echo WScript.Echo WshShell.RegRead ("HKEY_CURRENT_USER\Control Panel\International\sShortDate")
for /f %%a in ('cscript /nologo "%temp%\BackupDate.vbs"') do (
  set "RegDateOld=%%a"
)
>"%temp%\UnifyDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\UnifyDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\International\sShortDate", "yyyy-M-d", "REG_SZ"
cscript /nologo "%temp%\UnifyDate.vbs"
>"%temp%\DstDate.vbs" echo LastDate=date()-%DaysAgo%
>>"%temp%\DstDate.vbs" echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
>>"%temp%\DstDate.vbs" echo wscript.echo FmtDate
for /f %%a in ('cscript /nologo "%temp%\DstDate.vbs"') do (
  set "DstDate=%%a"
)
set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
for /r "%SrcDir%" %%a in (*.*) do (
  if "%%~ta" leq "%DstDate%" (
    if exist "%%a" (
      echo move  "%%a" "%%a"
    )
  )
)
>"%temp%\RecoverDate.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
>>"%temp%\RecoverDate.vbs" echo WshShell.RegWrite "HKEY_CURRENT_USER\Control Panel\International\sShortDate", "%RegDateOld%", "REG_SZ"
cscript /nologo "%temp%\RecoverDate.vbs"
change01.bat (change为第三方工具):

change 2.bat /from " /to ☆

rep-string02.bat (replace ☆ to "):
@echo off
setlocal enabledelayedexpansion
for /f "usebackq tokens=1,2,3,4 delims=☆" %%a in (2.bat) do (
  set str=%%d
REM  set str=!str:D:\temp02=D:\Temp1
set str=!str:D:\temp02=D:\Temp1\test\test99!
  echo %%a "^%%b" "!str!" >>3.bat
)
[ Last edited by pdanniel66 on 2010-7-13 at 05:29 ]

2010-7-13 05:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
losaray
新手上路





积分 2
发帖 2
注册 2010-7-12
状态 离线
『第 5 楼』:  

我也很想知道,使用批处理怎么自动判断文件更改时间?

2010-7-13 17:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  Re 5 楼

参考:批处理删除指定天数日期之前的文件
http://bbs.bathome.net/thread-3334-1-1.html



2010-7-14 09:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: