标题: [日期时间] 【已解决】批处理怎么获取当前所有文件夹的修改时间并按时间顺序输出到文件 [打印本页]
作者: raozhao2008 时间: 2015-8-12 20:23 标题: 【已解决】批处理怎么获取当前所有文件夹的修改时间并按时间顺序输出到文件
本帖最后由 raozhao2008 于 2015-8-15 20:12 编辑
1.批处理怎么获取当前目录下及子目录下所有文件夹的修改时间 2.将文件夹名、修改时间 按时间的先后顺序 输出到文件
作者: 回家路上 时间: 2015-8-13 00:58
本帖最后由 回家路上 于 2015-8-13 12:48 编辑
你想要的应该只是第二个问题吧,直接上第二个的脚本- @echo off
- %1(for /f "tokens=1,2 delims=[" %%a in ('%~s0 :^|sort') do echo;%%b %%a)>结果.txt&pause&exit
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /ad /s /b') do (
- for /f "tokens=1,2" %%b in ('dir /tc /od "%%a"^|findstr "%%~nxa"') do (
- set name=%%~nxa
- echo;%%~ta[!name:~0,30!
- )
- )
- endlocal
复制代码
修改,对齐一下
作者: raozhao2008 时间: 2015-8-13 08:25
回复 2# 回家路上
上次 第一个问题我换了个思路达到了目的,就是去获取文件的修改日期,但后来发现结果没有按时间排序,所以这次还是要获取文件夹的修改日期
作者: 回家路上 时间: 2015-8-13 08:50
回复 3# raozhao2008
、汗、把我的代码的for循环提出来单独成批处理执行得到的就是修改日期呀- 修改日期[文件名
- 修改日期[文件名
- 修改日期[文件名
- 修改日期[文件名
复制代码
作者: raozhao2008 时间: 2015-8-13 11:57
回复 2# 回家路上
试过你的代码,没反应啊
第一个for看不懂
作者: 回家路上 时间: 2015-8-13 12:40
本帖最后由 回家路上 于 2015-8-13 12:43 编辑
回复 5# raozhao2008
把这个批处理放到【当前目录】,执行没反应?
结果.txt里没有生成按修改时间排序的文件。稍等一会儿,等执行完,出现:请按任意键继续. . .
没有反应是什么概念,连错误都没有??
如果有错误,就发错误。
第二个for提传来就是修改时间的获取- @echo off & setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /ad /s /b') do (
- for /f "tokens=1,2" %%b in ('dir /tc /od "%%a"^|findstr "%%~nxa"') do (
- set name=%%~nxa
- echo;!name:~0,30! %%~ta
- )
- )
- pause
复制代码
作者: raozhao2008 时间: 2015-8-13 13:40
本帖最后由 raozhao2008 于 2015-8-13 13:41 编辑
回复 6# 回家路上
为什么这代码 每个一个文件夹都有3个结果- @echo off
- %1(for /f "tokens=1,2 delims=[" %%a in ('%~s0 :^|sort') do echo;%%b %%a)>>结果.txt&pause&exit
- for /f "delims=" %%a in ('dir /ad /s /b') do (
- for /f "tokens=1,2" %%b in ('dir /tc /od "%%a"^|findstr "%%~nxa"') do (
- echo;%%~ta[%%~nxa
- )
- )
复制代码
另外,您能解释一下第一句 "%1......" 吗
作者: 回家路上 时间: 2015-8-13 14:20
回复 7# raozhao2008
(1)复制代码
能遍历当前目录下及子目录下的
(2)复制代码
是只去名,不包含路径的
这样,你如果有不同级但是名字相同的就会好像显示多次一样,可明显不可能是同一个的,修改时间都不一样。。
要显示全路径的话,把%%~nxa变为%%a
(3)要知道%1什么意思,先知道%~s0什么意思
%~s0指的是本文件,就是当前批处理文件
在批处理里,直接写一个bat文件的名称,就是执行这个文件
所以【%~s0 :】意思是,执行当前批处理,并且传参数“:”
这样在第二次进入的时候,%1就是接受的第一个参数,为“:”就是注释的意思。第一行就不执行了。(第一次%1是空)复制代码
就是把当前批处理的执行输出进行排序
就这些吧,还有不明白的?
作者: raozhao2008 时间: 2015-8-13 19:53
回复 8# 回家路上
- @echo off
- %1(for /f "tokens=1,2 delims=[" %%a in ('%~s0 :^|sort') do echo;%%b %%a)>>结果.txt&pause&exit
- for /f "delims=" %%a in ('dir /ad /s /b') do (
- for /f "tokens=1,2" %%b in ('dir /tc /od "%%a"^|findstr "%%~nxa"') do (
- echo;%%~ta[%%~nxa
- )
- )
复制代码
新建几个文件夹,将其中一个文件夹重命名2次,在运行以上代码,怎么会出现3个此文件夹的结果
作者: 回家路上 时间: 2015-8-13 20:10
回复 9# raozhao2008
懵了。
上图,路径结构图,效果图
文件,测试的文件夹
可以等待高手来解决。
作者: 回家路上 时间: 2015-8-13 20:35
回复 10# 回家路上
改了一下- @echo off
- %1(for /f "tokens=1,2 delims=[" %%a in ('%~s0 :^|sort') do echo;%%b %%a)&pause&exit /b
- for /f "delims=" %%a in ('dir /ad /s /b') do (
- for /f "tokens=1,2" %%b in ('dir /tc "%%a"^|findstr "[^.]\.$"') do (
- echo;%%~ta[%%a
- )
- )
复制代码
作者: WHY 时间: 2015-8-13 20:45
回复 11# 回家路上
第4行的for循环好像没什么用,还影响效率。删掉这个for循环试试呢?
作者: WHY 时间: 2015-8-15 21:11
- @echo off
- %1"%~f0" : | sort > 结果.log & pause & exit
- for /f "tokens=*" %%i in ('dir /b /s /ad') do echo %%~ti %%i
复制代码
如果想按创建日期排序:- @echo off & setlocal enabledelayedexpansion
- %1"%~f0" : | sort > 结果.log & pause & exit
- for /f "tokens=*" %%i in ('dir /s /ad /tc^|findstr /i /r /c:" 的目录$" /c:" \.$"') do (
- for /f "tokens=1*delims=<" %%j in ("%%i") do (
- if not "%%k"=="" (echo %%j!s:~,-4!) else set "s=%%i"
- )
- )
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |