标题: [文件操作] 批处理怎样根据文件的创建日期和天数移动到指定文件夹? [打印本页]
作者: wcmgood 时间: 2010-7-13 13:58 标题: 批处理怎样根据文件的创建日期和天数移动到指定文件夹?
比如 把创建日期和当前日期大于30天的文件,根据文件的创建日期,移动到指定的文件夹下
文件名 创建日期
LSJW26H001 2010-04-01
LSJW26H002 2010-04-01
LSJW26H003 2010-05-02
LSJW26H004 2010-05-02
LSJW26H005 2010-06-01
LSJW26H007 2010-07-11
自动生成文件夹 201004 包含文件 LSJW26H001 LSJW26H002
自动生成文件夹 201005包含文件 LSJW26H003 LSJW26H004
自动生成文件夹 201006 包含文件 LSJW26H005
LSJW26H007 不用转移
作者: wcmgood 时间: 2010-7-13 13:58
我不懂代码,请各位直接给出代码 谢谢
作者: Batcher 时间: 2010-7-13 23:10
有没有兴趣学学基础,争取看懂代码呢?
作者: renmingwu 时间: 2010-7-14 08:42
第三方命令行工具forfiles可以很好的完成这个任务,基础的还是要学下的。
作者: wcmgood 时间: 2010-7-14 08:52
兄弟们,不如自己给个代码吧,因为这个东东平时用的很少,没有去关注过,谢谢各位了,周五就要用的
作者: wcmgood 时间: 2010-8-6 21:38
有没有兄弟给段代码啊,或者给个提示 给个方向
作者: broly 时间: 2010-8-6 22:04
给出文件后缀,这样方便写代码
作者: broly 时间: 2010-8-6 22:05
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /a-d-h /b') do (
- set folder=%%~ti
- set folder=!folder:~0,4!!folder:~5,2!
- if not "!folder!"=="201007" md !folder! 2>nul
- move "%%i" !folder!
- )
- pause
复制代码
作者: wcmgood 时间: 2010-8-6 22:24
文件后缀是 jpg文件 谢谢
作者: wcmgood 时间: 2010-8-6 22:28
Broly兄
你的方法基本正确的,能详细解释一下每一行的参数作用吗?正好学习学习,一旦日后更改,也好自己动手做
作者: broly 时间: 2010-8-6 23:28
- @echo off&setlocal enabledelayedexpansion
- rem 将每一个文件按顺序赋值给%%i
- for /f "delims=" %%i in ('dir /a-d-h /b') do (
- rem 将文件的日期赋值给变量folder,格式为2010-04-01
- set folder=%%~ti
- rem 截取,将格式变为如201004
- set folder=!folder:~0,4!!folder:~5,2!
- rem 如果名字不为201007,就按这个名字建立文件夹
- if not "!folder!"=="201007" md !folder! 2>nul
- rem 移动文件到建立的那个文件夹
- move "%%i" !folder!
- )
- pause
复制代码
作者: broly 时间: 2010-8-6 23:42
如果知道具体的数据情况,可以写一个更好的
作者: wcmgood 时间: 2010-8-8 21:00
谢谢,问题解决
作者: wngfei 时间: 2010-12-8 14:07 标题: 请教Broly具体细节
若是我的原文件在C:\jjye下,而目标文件夹是w:\jjye,代码应该怎样写,多谢。
作者: hanyeguxing 时间: 2010-12-8 16:54
说明:
set "l0=C:\jjye" 源路径
set "l1=w:\jjye" 目标路径
call,30 这里的30指30天前- @echo off&setlocal enabledelayedexpansion
- set "l0=C:\jjye"
- set "l1=w:\jjye"
- call:D,30
- for /f "delims=" %%a in ('dir /a:-d/b "%l0%"') do (
- set t=%%~ta
- set t=!t:-=!
- if not "!t:~0,8!" lss "%D%" (
- if not exist "%l1%\!t:~,06!\" md "%l1%\!t:~,06!"
- move "%%a" %l1%\!t:~,06!
- ))
- exit
- :D
- for /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do set Y=%%a&set M=%%b&set D=%%c
- if "%M:~0,1%"=="0" set M=%M:~1%
- if "%D:~0,1%"=="0" set D=%D:~1%
- set/a D-=%1
- if %D% gtr 0 goto:Y
- :M
- set/a M-=1
- if !M!==0 set/a Y-=1,M=12
- set/a "T=^!(M-2)","R=(^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)","C=^!(M-4)|^!(M-6)|^!(M-9)|^!(M-11)","D=T*(28+R)+C*30+(^!T&^!C)*31+D"
- if %D% leq 0 goto:M
- :Y
- set M=0%M%&set D=0%D%&set D=%Y%!M:~-2!!D:~-2!
复制代码
作者: wngfei 时间: 2010-12-10 15:56
多谢寒夜孤星,是学到不少东西。孤星应该是启明星,呵呵。
作者: jijo 时间: 2010-12-29 17:16
好办法,收藏了!
基本解决了我目前的困扰!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |