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

[文本处理] [已解决]批处理如何在多个文件夹下提取最新生成的文件?

[复制链接]
发表于 2014-12-22 00:43:03 | 显示全部楼层 |阅读模式
多个文件夹下有N个文件夹,怎么从这些文件夹下提取最新生成的一个文件啊。csv格式文件!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-12-22 11:37:12 | 显示全部楼层
怎么个提取
发表于 2014-12-22 22:50:48 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%i in ('dir /a-d /b/s/o-d *.csv') do set var=%%i&&goto next
  3. :next
  4. echo   "%var%"
  5. pause
复制代码
 楼主| 发表于 2014-12-25 11:26:33 | 显示全部楼层
比如在11文件夹下有1,2,3,4,5,6,7,8,9,   9个文件夹 每个文件夹都会不定时更新一些CSV文件;怎么才能时时提取这些子文件夹下面最新的一个CSV文件(每个文件夹下面提取一个)汇总成一个新的文件夹另存啊;
 楼主| 发表于 2014-12-25 16:34:55 | 显示全部楼层
回复 2# 慕夜蓝化


   
比如在11文件夹下有1,2,3,4,5,6,7,8,9,   9个文件夹 每个文件夹都会不定时更新一些CSV文件;怎么才能时时提取这些子文件夹下面最新的一个CSV文件(每个文件夹下面提取一个)汇总成一个新的文件夹另存啊;
 楼主| 发表于 2014-12-25 17:11:53 | 显示全部楼层
@echo off
set rar="C:\Program Files\WinRAR\rar.exe"
set archive=all.rar
for /d /r E:\ %%a in (*) do set "fo=%%a" & call :latest
echo/&pause&exit/b
:latest
for /f "eol=| delims=" %%a in ('dir /a-d /b /o-d /tw "%fo%" 2^>nul') do %rar% a %archive% "%fo%\%%a"&goto :eof
这个是坛子里搜的一个代码;能提取但是它这个把提取后的内容打包了,如果不需要打包怎么改啊?
提取出来的文件能不能按文件夹的名字命名啊!比如1里面提取出来的就叫1.csv。。。
即9个文件夹提取出9个最新的CSV文件跟文件夹名字一致分别叫1.csv.2.csv。。。放在自动建立的New文件夹里;
 楼主| 发表于 2014-12-26 11:03:11 | 显示全部楼层
得罪大神们了么。大锅大姐们给帮帮忙撒!
发表于 2014-12-26 11:22:37 | 显示全部楼层
回复 6# haichuan5121


    你确定这个代码能搜出每个文件夹下的最新文件?我看代码里面应该没这个功能吧
 楼主| 发表于 2014-12-26 11:25:48 | 显示全部楼层
回复 8# DAIC


    我运行了一下,每个文件夹下确实提取了一个出来,而且还打包了。是不是最新的没注意。。。。也是临时抱佛脚网上搜的代码。。。
 楼主| 发表于 2014-12-26 11:32:48 | 显示全部楼层
回复 8# DAIC


    刚确认了下我提取的确实是最新的;
发表于 2014-12-26 12:39:45 | 显示全部楼层
回复 10# haichuan5121


    确实是的,刚才没看清楚。
发表于 2014-12-26 12:40:19 | 显示全部楼层
回复 6# haichuan5121


帮你把打包的功能去掉了
  1. @echo off
  2. set "NewFolder=D:\新文件夹"
  3. if not exist "%NewFolder%" (
  4.     md "%NewFolder%"
  5. )
  6. for /d /r E:\ %%a in (*) do (
  7.     call :latest "%%a"
  8. )
  9. pause
  10. goto :eof

  11. :latest
  12. for /f "delims=" %%a in ('dir /a-d /b /o-d /tw "%~1" 2^>nul') do (
  13.     copy /y "%~1\%%a" "%NewFolder%"
  14.     goto :eof
  15. )
复制代码

评分

参与人数 1技术 +1 收起 理由
haichuan5121 + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-12-26 12:56:53 | 显示全部楼层
回复 12# DAIC


    多谢大哥了,非常完美谢了!!!
发表于 2014-12-26 14:38:30 | 显示全部楼层
@echo off
setlocal enabledelayedexpansion
md 新生 >nul 2>nul
for /f "delims=" %%i in ('dir /b/l/ad') do (
    call :a "%%~dpnxi"
    set "n="
)
pause&exit

:a
echo,-------------------------------------&echo,%~1
for /f "tokens=*" %%a in ('dir /s/b/l/aa/o-d "%~1\*mp3"') do (
    set /a n+=1
    if !n! equ 1 move /y "%%~a" "新生\"
)
goto :eof
也许晚了一些,其实在这之前写过一个显示当前目录以及子目录下所有最新生成的文件的脚本。
不过一个是显示,一个是提取吧,还有这里的提取是移动,如果不想移动,那么将参数中move改为copy即可。
希望对你有用。
发表于 2014-12-26 14:45:13 | 显示全部楼层
回复 14# 慕夜蓝化


dir 命令的 /l 是多余的吧?
%%~dpnxi 是不是可以简写成 %%~fi 呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 00:25 , Processed in 0.018855 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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