[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

多个文件夹下有N个文件夹,怎么从这些文件夹下提取最新生成的一个文件啊。csv格式文件!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

怎么个提取
踏实一些点.不要着急.你想要的时间都会给你.2

TOP

  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
复制代码

TOP

比如在11文件夹下有1,2,3,4,5,6,7,8,9,   9个文件夹 每个文件夹都会不定时更新一些CSV文件;怎么才能时时提取这些子文件夹下面最新的一个CSV文件(每个文件夹下面提取一个)汇总成一个新的文件夹另存啊;

TOP

回复 2# 慕夜蓝化


   
比如在11文件夹下有1,2,3,4,5,6,7,8,9,   9个文件夹 每个文件夹都会不定时更新一些CSV文件;怎么才能时时提取这些子文件夹下面最新的一个CSV文件(每个文件夹下面提取一个)汇总成一个新的文件夹另存啊;

TOP

@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文件夹里;

TOP

得罪大神们了么。大锅大姐们给帮帮忙撒!

TOP

回复 6# haichuan5121


    你确定这个代码能搜出每个文件夹下的最新文件?我看代码里面应该没这个功能吧

TOP

回复 8# DAIC


    我运行了一下,每个文件夹下确实提取了一个出来,而且还打包了。是不是最新的没注意。。。。也是临时抱佛脚网上搜的代码。。。

TOP

回复 8# DAIC


    刚确认了下我提取的确实是最新的;

TOP

回复 10# haichuan5121


    确实是的,刚才没看清楚。

TOP

回复 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

评分人数

TOP

回复 12# DAIC


    多谢大哥了,非常完美谢了!!!

TOP

@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即可。
希望对你有用。
踏实一些点.不要着急.你想要的时间都会给你.2

TOP

回复 14# 慕夜蓝化


dir 命令的 /l 是多余的吧?
%%~dpnxi 是不是可以简写成 %%~fi 呢?

TOP

返回列表