找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28082|回复: 7

[其他] 批处理怎么全盘搜索最近一个月之内修改过的指定文本文档?

[复制链接]
发表于 2010-8-7 13:13:12 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-14 21:59 编辑

我想实现“在全盘搜索最近修改过的,特定名称的txt文档,并显示出来”

这个应该怎么写呢?
发表于 2010-8-7 13:57:11 | 显示全部楼层
for的扩展参数里可以显示某文件修改的时间,只是不知道楼主所谓的最近有什么范围没有?
 楼主| 发表于 2010-8-7 14:01:11 | 显示全部楼层
原帖由 TX_kakashi 于 2010-8-7 13:57 发表
for的扩展参数里可以显示某文件修改的时间,只是不知道楼主所谓的最近有什么范围没有?




“今天之前的一个月”for可以实现吗?
有没有具体的代码呢?
发表于 2010-8-7 14:30:37 | 显示全部楼层
原帖由 binghee 于 2010-8-7 14:01 发表




“今天之前的一个月”for可以实现吗?
有没有具体的代码呢?


哇,那可就是大工程了,需要算法强人。
先给个简易代码(for命令显示文件修改时间)

  1. @echo off
  2. setlocal
  3. title 查看文件修改时间
  4. :bof
  5. set /p myFile=[把文件拖到此处,并按Enter]
  6. if not exist %myFile% goto bof
  7. call :showDate %myFile%
  8. pause>nul
  9. goto bof

  10. :showDate
  11. for /f "delims=" %%a in ("%~1") do echo 修改时间为:[%%~ta]
  12. exit/b
复制代码
 楼主| 发表于 2010-8-7 14:50:27 | 显示全部楼层
原帖由 TX_kakashi 于 2010-8-7 14:30 发表


哇,那可就是大工程了,需要算法强人。
先给个简易代码(for命令显示文件修改时间)

@echo off
setlocal
title 查看文件修改时间
:bof
set /p myFile=[把文件拖到此处,并按Enter]
if not exist %myFile% ...



其实我想实现的功能只有两个:

1.全盘搜索某个文本文档(比如1.txt)

2.将搜索出来的多个1.txt文档进行比较,显示出最近修改过的一个

不知道怎么可以实现呢?
发表于 2010-8-7 15:49:10 | 显示全部楼层
for+dir /a /s /b 1.txt输出文件日期 时间 路径 到一个文件a.txt
2010-03-24 18:20:34 c:\windows\1.txt
2010-02-22 05:24:41 c:\test\1.txt
然后sort /r a.txt,取出第一行就是了
 楼主| 发表于 2010-8-9 13:22:50 | 显示全部楼层
原帖由 caruko 于 2010-8-7 15:49 发表
for+dir /a /s /b 1.txt输出文件日期 时间 路径 到一个文件a.txt
2010-03-24 18:20:34 c:\windows\1.txt
2010-02-22 05:24:41 c:\test\1.txt
然后sort /r a.txt,取出第一行就是了



没看懂,能不能把具体的代码写一下呢?

请问应该怎么输出日期和时间呢?

[ 本帖最后由 binghee 于 2010-8-9 13:26 编辑 ]
发表于 2016-7-14 22:32:09 | 显示全部楼层
本帖最后由 pcl_test 于 2016-7-14 22:44 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. rem 修改日期在至今30天以内,即一个月内
  3. set d=-30
  4. rem 指定查找文件
  5. set "f=1.txt"
  6. for /f %%a in ('mshta VBScript:Execute("CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1).Write DateAdd(""d"",%d%,date):close"^)') do set ad=%%a
  7. set ad=%ad:-=%
  8. set ad=%ad:/=%
  9. for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z)  do (
  10.     if exist %%i:\ (
  11.         for /f "delims=" %%a in ('dir /a-d/b/s %%i:"%f%" 2^>nul') do (
  12.             for /f "tokens=1" %%b in ("%%~ta") do set bd=%%b
  13.             set bd=!bd:-=!
  14.             set bd=!bd:/=!
  15.             if !bd! gtr %ad% echo;%%a
  16.         )
  17.     )
  18. )
  19. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 07:53 , Processed in 0.032913 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表