Board logo

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

作者: haichuan5121    时间: 2017-3-23 02: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. )
复制代码

作者: ShowCode    时间: 2017-3-23 10:39

set "NewFolder=E:\csv" 这里写错了吧?新文件夹不能跟老文件夹一样啊,Windows文件夹不区分大小写
作者: haichuan5121    时间: 2017-3-26 08:58

继续求指导
作者: haichuan5121    时间: 2017-3-26 17:17

坚持坚持大神在哪
作者: haichuan5121    时间: 2017-3-28 18:25

各位老师 帮帮忙啊! 小弟只会看不会写啊!
作者: haichuan5121    时间: 2017-3-29 09:10     标题: 求修改提取文本重命名的代码。

大神老师请指点。。
         写的提取文本重命名的代码。这个提取的结果是最老的一个文件,怎么修改提取的就是最新的了啊?
在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. ))
复制代码

作者: ShowCode    时间: 2017-3-29 09:56

回复 6# haichuan5121


    把 /o-d 改成 /od 试试看
作者: haichuan5121    时间: 2017-3-29 11:16

回复 7# ShowCode


    结果还是一样   提取的最老的
作者: haichuan5121    时间: 2017-3-30 14:36

文件夹下文件只提取第二个用什么分割区分啊
作者: ShowCode    时间: 2017-3-30 18:41

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

作者: haichuan5121    时间: 2017-4-2 01:46

本帖最后由 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. )
复制代码
这个可以提第二个   按提取文件所在文件夹名字重命名怎么修改?
作者: ShowCode    时间: 2017-4-2 11:30

回复 11# haichuan5121


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




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2