[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [小白求助]根据文件修改日期自动创建文件夹并移动文件[已解决]

本帖最后由 13917134 于 2018-3-27 10:20 编辑

在一个文件夹下一个若干个文件,希望可以根据文件修改时间(是修改时间,因为创建时间可能有很多是一样的。单修改时间可以进行分类)自动建立以修改时间为日期的文件夹,并吧相同一天修改时间下的文件都移动到里面
求代码
文件名结构如下:
文件名                    |    修改时间
23545.csv              |    2016-09-23 16:33 PM
54782.dt2              |    2016-09-23 16:55 PM
123123.ts2             |   2016-10-22 15:55 PM
wksj11.csv             |    2017-2-14  12:22 AM
b20160809.csv       |    2017-2-14 12:22 AM

建立以修改时间作为名字的文件夹可以是2016-01-05或者是20160105这样的文件夹名字,目的只是需要把这个文件夹下上万文件分类,根据修改日期天数移动到相应的根据天数日期建立的文件夹下。
百度了一下以及在论坛中搜索相关内容未发现此类相关
找到一个相关代码,不知道怎么修改。
求大神解答
  1. cd /d %~dp0
  2. setlocal enabledelayedexpansion
  3. set NowYM=%date:~,4%%date:~5,2%
  4. if not exist !NowYM! md !NowYM!
  5. for /f "delims=" %%a in ('dir /a-d/b/tw') do (
  6.     if not "%%~fa"=="%~f0" (
  7.         set FileYM=%%~ta
  8.         set FileYM=!FileYM:~,4!!FileYM:~5,2!
  9.         if !FileYM! equ !NowYM! move "%%~a" !NowYM!\
  10.     )
  11. )
  12. pause
复制代码

回复 3# 13917134


不同的系统设置会导致 %%~ta 获取到的日期格式不一样,所以可移植性较差。
在不同的电脑上执行代码之前,需要先做好测试。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# yhcfsr
运行过后发现年在日期之后。做了一点小修改。谢谢大神的代码,
修改后的代码如下
  1. @ECHO OFF&setlocal enabledelayedexpansion
  2. for /f "tokens=1-3 delims=" %%a in ('dir /a-d/b') do (
  3. set "write_date=%%~ta"
  4. set "write_date=!write_date:/=!"
  5. set "write_date=!write_date:~4,4!!write_date:~0,4!"
  6. if not exist !write_date! md "!write_date!"
  7. move /y "%%a" "!write_date!"
  8. )
复制代码

TOP

本帖最后由 yhcfsr 于 2018-3-26 16:11 编辑
  1. @ECHO OFF&setlocal enabledelayedexpansion
  2. set "SrcDir=E:\IRead\批处理大全"
  3. cd /d "%SrcDir%"
  4. for /f "tokens=1-3 delims=" %%a in ('dir /a-d/b') do (
  5. set "write_date=%%~ta"
  6. set "write_date=!write_date:/=!"
  7. set "write_date=!write_date:~0,8!"
  8. if not exist !write_date! md "!write_date!"
  9. copy /y "%%a" "!write_date!"
  10. )
复制代码
最好将第二行的路径改成源目录路径,然后将BAT放源目录外执行。否则这个BAT文件也会被分类。
若是不介意述问题,把2,3行都删除,放在源目录执行。
若无问题,将第9行COPY改成MOVE可实现文件移动。
1

评分人数

TOP

返回列表