标题: [文件操作] [小白求助]根据文件修改日期自动创建文件夹并移动文件[已解决] [打印本页]
作者: 13917134 时间: 2018-3-26 15:14 标题: [小白求助]根据文件修改日期自动创建文件夹并移动文件[已解决]
本帖最后由 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这样的文件夹名字,目的只是需要把这个文件夹下上万文件分类,根据修改日期天数移动到相应的根据天数日期建立的文件夹下。
百度了一下以及在论坛中搜索相关内容未发现此类相关
找到一个相关代码,不知道怎么修改。
求大神解答- cd /d %~dp0
- setlocal enabledelayedexpansion
-
- set NowYM=%date:~,4%%date:~5,2%
-
- if not exist !NowYM! md !NowYM!
-
- for /f "delims=" %%a in ('dir /a-d/b/tw') do (
- if not "%%~fa"=="%~f0" (
- set FileYM=%%~ta
- set FileYM=!FileYM:~,4!!FileYM:~5,2!
- if !FileYM! equ !NowYM! move "%%~a" !NowYM!\
- )
- )
- pause
复制代码
作者: yhcfsr 时间: 2018-3-26 16:09
本帖最后由 yhcfsr 于 2018-3-26 16:11 编辑
- @ECHO OFF&setlocal enabledelayedexpansion
- set "SrcDir=E:\IRead\批处理大全"
- cd /d "%SrcDir%"
- for /f "tokens=1-3 delims=" %%a in ('dir /a-d/b') do (
- set "write_date=%%~ta"
- set "write_date=!write_date:/=!"
- set "write_date=!write_date:~0,8!"
- if not exist !write_date! md "!write_date!"
- copy /y "%%a" "!write_date!"
- )
复制代码
最好将第二行的路径改成源目录路径,然后将BAT放源目录外执行。否则这个BAT文件也会被分类。
若是不介意述问题,把2,3行都删除,放在源目录执行。
若无问题,将第9行COPY改成MOVE可实现文件移动。
作者: 13917134 时间: 2018-3-27 10:20
回复 2# yhcfsr
运行过后发现年在日期之后。做了一点小修改。谢谢大神的代码,
修改后的代码如下- @ECHO OFF&setlocal enabledelayedexpansion
- for /f "tokens=1-3 delims=" %%a in ('dir /a-d/b') do (
- set "write_date=%%~ta"
- set "write_date=!write_date:/=!"
- set "write_date=!write_date:~4,4!!write_date:~0,4!"
- if not exist !write_date! md "!write_date!"
- move /y "%%a" "!write_date!"
- )
复制代码
作者: Batcher 时间: 2018-3-27 10:22
回复 3# 13917134
不同的系统设置会导致 %%~ta 获取到的日期格式不一样,所以可移植性较差。
在不同的电脑上执行代码之前,需要先做好测试。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |