批处理编程达人进!!!!!

yesong_1985 2008-04-24 03:42:37
现在需要写个批处理
功能: 指定目录(目录可以由用户设定)下 查询文件的名称 大小 以及最后更新时间(精确到天就好了)
并且把最后更新时间=指定日期(用户指定) 的文件 的名称 大小 以及最后更新时间生成日志

本人对批处理一无所知 等待高人指点
...全文
156 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
yesong_1985 2008-04-25
  • 打赏
  • 举报
回复

现在问题基本解决了 至于对于同时处理不同的文件夹 我还是写了个别的文件 改起来也方便
好了 再次谢谢redleaves 下次有问题还要向你请教呢
Wolf_FienD 2008-04-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 OpenHero 的回复:]
google vbs
google bat
[/Quote]
awperpvip 2008-04-25
  • 打赏
  • 举报
回复
mark
redleaves 2008-04-25
  • 打赏
  • 举报
回复
贴个完整的,免得你改错了.
[code=BatchFile]@echo off
set date_time=%date%
for /F "tokens=1,2,3 delims=- " %%g in ("%date_time%") do (
set y=%%g
set m=%%h
set d=%%i
)
set root=%1
echo %y%-%m%-%d% path:%root%
for /r %root% %%f in (*.*) do (
for /F "tokens=1,2,3 delims=- " %%g in ("%%~tf") do (
if %%g GEQ %y% if %%h GEQ %m% if %%i GEQ %d% (
echo %%~tf %%~zf %%f >> "%root%\%y%-%m%-%d%.log"
)
)
)
[/code]
redleaves 2008-04-25
  • 打赏
  • 举报
回复
那也很简单,把echo %%~tf %%~zf %%f这行改成echo %%~tf %%~zf %%f >> "%root%\%y%-%m%-%d%.log"
yesong_1985 2008-04-24
  • 打赏
  • 举报
回复
哦~~是这样哈 你的意思我现在明白了一些
但是还有个问题~~(表拍我哈~~)
就是 生存的log文件 要和系统当前的时间对应 好比说今天的就生成2008-04-24.log 这个在代码里面怎么实现
如果可以的话 可以直接运行批处理find.bat 中间提示指定的路径 然后在指定的目录下自动生存对应的log文件
这样要实现的话 该怎么改呢?
redleaves 2008-04-24
  • 打赏
  • 举报
回复
错了,set date_time=%time%不对,是set date_time=%date%.不好意思.
redleaves 2008-04-24
  • 打赏
  • 举报
回复
呵呵,因为find是系统命令....我写find只是个示例而已...要不你改个名称,要不就写find.bat 2008-04-24 c:\test > log.txt
另外,如果用系统当前时间,就把第二行的set date_time=%1改一下,改成set date_time=%time%
当然,如果你改了set root=%2,那它要改成set root=%1.
wxiaozhe 2008-04-24
  • 打赏
  • 举报
回复
学习。。。。
yesong_1985 2008-04-24
  • 打赏
  • 举报
回复
谢谢 redleaves 的代码
正研究中~~
但是和我的想法稍微有点出入 我只是需要与当前系统日期比较就可以了 不需要手动输入的
还有 你的代码咋样运行呀 我为啥老是提示我find 参数格式不正确
我是直接把代码拷到c盘下面 然后进dos
在c:\下敲 find 2008-04-24 c:\test > log.txt的
redleaves 2008-04-24
  • 打赏
  • 举报
回复
对了,我这个代码是找当前路径的,你把set root=%CD%改一下,改成 set root=%2
用法就是find 2008-03-23 c:\abc > log.txt
另外,
上面的find 2008 03 23 > log.txt写法不对,日期中间不能用空格,要用-,要不参数要认错.呵呵.
redleaves 2008-04-24
  • 打赏
  • 举报
回复
代码如下.你自己存个批处理文件.
[code=BatchFile]@echo off
set date_time=%1
for /F "tokens=1,2,3 delims=- " %%g in ("%date_time%") do (
set y=%%g
set m=%%h
set d=%%i
)
echo %y% %m% %d%
set root=%CD%
for /r %root% %%f in (*.*) do (
for /F "tokens=1,2,3 delims=- " %%g in ("%%~tf") do (
if %%g GEQ %y% if %%h GEQ %m% if %%i GEQ %d% (
echo %%~tf %%~zf %%f
)
)
)
[/code]
用法是find 2008 03 23 > log.txt
不过批处理有点慢...
eduhf_123 2008-04-24
  • 打赏
  • 举报
回复
time <NUL >>log.txt
dir /args |find /args >>arg.txt
yesong_1985 2008-04-24
  • 打赏
  • 举报
回复
不是两个 就是一个问题 查找到对应的文件 并把文件的信息写到日志里
现在 一方面不知道如何根据系统时间来命名日志
另一方面 不知道如何根据文件的更新日期信息写for循环
shaoze5 2008-04-24
  • 打赏
  • 举报
回复
第一个用dir可以取到,具体的可以cmd dir/?
第二个不清楚了哦!
Treazy 2008-04-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 OpenHero 的回复:]
google vbs
google bat
[/Quote]

yeah
OpenHero 2008-04-24
  • 打赏
  • 举报
回复
vbs 和bat 后缀的文件就可以用来做批处理~
你上网搜寻一下这些文件怎么写,就ok了
yesong_1985 2008-04-24
  • 打赏
  • 举报
回复
? 2楼是啥意思
OpenHero 2008-04-24
  • 打赏
  • 举报
回复
google vbs
google bat

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧