Board logo

标题: [文本处理] 批处理判断最新文件提取参数问题 [打印本页]

作者: haichuan5121    时间: 2017-2-2 13:10     标题: 批处理判断最新文件提取参数问题

FTP 目录A文件夹下 不定期更新csv格式文件,如何实时判断并提取最新文件内含有指定字符的行,比如(power)数据汇总到新表啊,新表数据更新后累加到之前表后面不覆盖原表!提取两个或多个关键字的行呢?
作者: CommandBatCmd    时间: 2017-2-2 17:30

回复 1# haichuan5121
  1. @echo off
  2. set "csv=%~0"
  3. set "dat=1.txt"
  4. set "txt=power"
  5. more +8 "%csv%"|find /i "%txt%" >>"%dat%"
  6. "%dat%"
  7. pause&exit
  8. :csv格式文件内容
  9. [文本处理] 判断最新文件提取参数问题
  10. FTP 目录A文件夹下 不定期更新csv格式文件,如何实时判断并提取最新文件内含有指定字符的行,
  11. 比如(power)数据汇总到新表啊,新表数据更新后累加到之前表后面不覆盖原表!提取两个或多个关键字的行呢?
  12. http://www.bathome.net/thread-43075-1-1.html
  13. 17:26 2017-02-02
复制代码

作者: haichuan5121    时间: 2017-2-2 18:36

回复 2# CommandBatCmd


    看不明白啊!结果也没实现。。。求大神科普
作者: CommandBatCmd    时间: 2017-2-2 20:37

回复 3# haichuan5121

应楼主要求,可根据这个详细的注释版,变态的修改。
  1. @echo off
  2. set "csv=%~0"     ||rem 指定FTP 目录A文件夹下 不定期更新csv格式文件的名称
  3. set "txt=power"   ||rem 设置在csv格式文件的每行中要提取的字符串
  4. set "dat=1.txt"   ||rem 指定之前数据表文件的名称,用于保存提取的行。
  5. type "%csv%"|find /i "%txt%" >>"%dat%"||rem 提取并保存到原表的尾部。
  6. notepad.exe "%dat%"||rem 查看结果
  7. pause&exit
复制代码

作者: haichuan5121    时间: 2017-2-3 09:15

本帖最后由 haichuan5121 于 2017-2-3 18:38 编辑

回复 4# CommandBatCmd


   十分感谢大神提点;提取文本没问题了,里面关键数据怎么提取啊
多个关键字怎么提取啊,比如第一行是关键字 下面的列都是关键字后面一个的数据值,如
  power1  POWER2  POWER3  POWER4
  1  2  3  4
  1  2  2  3
  2  3  2  4
  3  2  2  3  
   .   .   .   .
   .    .   .   .
作者: haichuan5121    时间: 2017-2-3 18:35

@echo off
set "NewFolder=E:\csv"
if not exist "%NewFolder%\" (
    md "%NewFolder%"
)
for /d /r E:\CSV\ %%a in (*) do (
    call :latest "%%a"
)
pause
goto :eof

:latest
for /f "delims=" %%a in ('dir /a-d /b /o-d /tw "%~1" 2^>nul') do (
    copy /y "%~1\%%a" "%NewFolder%"
    goto :eof
)
最新文件能提取了 ,但最新文件的最新名字不一样,文件夹下会一直生成最新的文件,怎么修改能只留最新的呢?比如1点提取了一个2点再提取的话就会有两个了 ,怎么始终保留最新一个;
作者: CommandBatCmd    时间: 2017-2-3 20:41

回复 6# haichuan5121


    在启动批处理时,获取系统时间,把每个cvs文件的修改时间与之对比,最短的那个就是最新的。




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