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

[文本处理] (已解决)批处理如何查找出多个文件夹里最新的文件并以所在的文件夹的名称重命名?

[复制链接]
发表于 2017-3-23 02:54:54 | 显示全部楼层 |阅读模式
提取最新文件重命名请教大神
我有一个提取最新文件的批处理,怎么让它按照提取的文件夹名字重命名啊,比如E盘下有10个文件夹每个里面提取一个最新文本,
这10个文本名字按提取的文件夹名字命名;如果只提取大于10KB的最新文本怎么修改呢
  1. @echo off
  2. set "NewFolder=E:\csv"
  3. if not exist "%NewFolder%" (
  4.     md "%NewFolder%"
  5. )
  6. for /d /r E:\CSV\ %%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. )
复制代码

评分

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

查看全部评分

发表于 2017-3-23 10:39:29 | 显示全部楼层
set "NewFolder=E:\csv" 这里写错了吧?新文件夹不能跟老文件夹一样啊,Windows文件夹不区分大小写
 楼主| 发表于 2017-3-26 08:58:33 | 显示全部楼层
继续求指导
 楼主| 发表于 2017-3-26 17:17:50 | 显示全部楼层
坚持坚持大神在哪
 楼主| 发表于 2017-3-28 18:25:38 | 显示全部楼层
各位老师 帮帮忙啊! 小弟只会看不会写啊!
 楼主| 发表于 2017-3-29 09:10:07 | 显示全部楼层

求修改提取文本重命名的代码。

大神老师请指点。。
         写的提取文本重命名的代码。这个提取的结果是最老的一个文件,怎么修改提取的就是最新的了啊?
在F:/LOG 下有10个文件夹 ,每个文件夹下有2000文件,想提取最新生成的>10K 的文件或者倒数第二个生成的文件!
  1. @Echo Off
  2. For /f "tokens=*" %%i in ('dir /ad /b /s/o-d /tw "%~dp0"') do (
  3. For /f "skip=1999 tokens=*" %%j in ('dir /a-d /b /s/o-d /tw "%%i\*.CSV"') do (
  4. Ren "%%j" "%%~nxi%%~xj"
  5. Copy "%%i\%%~nxi%%~xj" "F:\log"
  6. ))
复制代码
发表于 2017-3-29 09:56:28 | 显示全部楼层
回复 6# haichuan5121


    把 /o-d 改成 /od 试试看
 楼主| 发表于 2017-3-29 11:16:10 | 显示全部楼层
回复 7# ShowCode


    结果还是一样   提取的最老的
 楼主| 发表于 2017-3-30 14:36:53 | 显示全部楼层
文件夹下文件只提取第二个用什么分割区分啊
发表于 2017-3-30 18:41:27 | 显示全部楼层
回复 9# haichuan5121


只提取第二个
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "skip=1 delims=" %%i in ('dir /b /a-d') do (
  4.     set "file=%%i"
  5.     goto next
  6. )

  7. :next
  8. echo,!file!
  9. pause
复制代码
 楼主| 发表于 2017-4-2 01:46:29 | 显示全部楼层
本帖最后由 haichuan5121 于 2017-4-2 02:09 编辑

回复 10# ShowCode
  1. @echo off
  2. set "NewFolder=f:\log"
  3. if not exist "%NewFolder%" (
  4.     md "%NewFolder%"
  5. )
  6. for /d /r f:\log\ %%a in (*) do (
  7.     call :latest "%%a"
  8. )
  9. pause
  10. goto :eof

  11. :latest
  12. for /f "skip=1 delims=" %%a in ('dir /a-d /b /o-d /tw "%~1" 2^>nul') do (
  13. copy /y "%~1\%%a" "%NewFolder%"
  14.     goto :eof
  15. )
复制代码
这个可以提第二个   按提取文件所在文件夹名字重命名怎么修改?
发表于 2017-4-2 11:30:18 | 显示全部楼层
回复 11# haichuan5121


    第14行改成 copy /y "%~1\%%a" "%NewFolder%\%~nx1%%~xa"

评分

参与人数 1技术 +1 收起 理由
haichuan5121 + 1 谢谢大神指点,成功完成,奔着学习的精神能 ...

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 16:06 , Processed in 0.022358 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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