Board logo

标题: [文件操作] 目标.log文件不是主文件夹下,而是在主文件夹的最新(按创建时间)子文件夹下面 [打印本页]

作者: Fowindy    时间: 2017-7-18 07:37     标题: 目标.log文件不是主文件夹下,而是在主文件夹的最新(按创建时间)子文件夹下面

请大神帮忙修改此批处理,目标.log文件不是主文件夹下,而是在主文件夹的最新(按创建时间)子文件夹下面,处理完.log文件之后,.log文件名不能修改还是放在原有子文件夹下面;十分感谢!!!可以给予合理报酬
首先说一下我的整个需求(目前批处理已经能够完成对.log档的修改):
如插图所示:其中红色文字内容是需要求助的;

但现在路径不对,.log文件不是在Repair1和Repair2路径下生成的,而是在它们的子文件夹下面生成的
因为子文件夹会改变
我现在实现起来比较麻烦,隔一段时间要去修改批处理的路径
我就是想能不能让这个批处理更智能一点,自动识别,最新(按创建时间)的子文件夹文件夹
只能去识别Repair1或者Repair2下面最新生成的那个子文件夹
最新生成的子文件夹才是目前工作的文件夹,其他子文件夹是已经工作过的
不能去识别Repair下面所有子文件夹,因为Repair下面有多级子文件夹(如果你能实现只查找第一级子文件夹也可以,第一级子文件夹的数量相对少一点,但是第二级子文件夹的数量非常之多,而且一直在增加的状态)
下面是相关需要修改的原始文档:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "f="
  4. timeout /?>nul 2>&1&&set v=1||set v=2
  5. :begin
  6. set "n="
  7. set "fd="
  8. set "flag="
  9. for /f "delims=" %%a in ('dir /b "D:\Repair1\"*.log 2^>nul') do set "t=%%a"&set "fd=D:\Repair1"
  10. for /f "delims=" %%a in ('dir /b "D:\Repair2\"*.log 2^>nul') do set "t=%%a"&set "fd=D:\Repair2"
  11. if "%t%" neq "%f%" (
  12.     set "f=%t%"
  13.     for /f "delims=" %%b in ('type "%fd%\!f!"') do (
  14.         set "line=%%b"
  15.         if "!line:-AdditionalPartInfo-=!" neq "%%b" set n=1
  16.         if defined n (
  17.             for /f "tokens=1-8 delims=," %%c in ("%%b") do (
  18.                 if "%%i" neq "" (
  19.                     if "%%i" neq "BarcodeFailure" (
  20.                         set "#_#%%e=%%i"
  21.                     ) else set flag=1
  22.                 )
  23.             )
  24.         )
  25.     )
  26.     if defined flag (
  27.         set "n="
  28.         (for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%fd%\!f!"') do (
  29.             set "line=#%%c"
  30.             if "!line:-AdditionalPartInfo-=!" neq "#%%c" set n=1
  31.             if defined n (
  32.                 if "!line:BarcodeFailure=!" neq "#%%c" (
  33.                     set line=!line:~1!
  34.                     for /f "tokens=1-8 delims=," %%i in ("%%c") do (
  35.                         for /f "delims=" %%i in ("!#_#%%k!") do echo;!line:BarcodeFailure=%%i!
  36.                     )
  37.                 ) else echo;%%c
  38.             ) else echo;%%c
  39.         ))>"%tmp%\$tmp.txt"
  40.         copy "%tmp%\$tmp.txt" "%fd%\!f!" /y
  41.     ) else echo;"%fd%\!f!" no BarcodeFailure
  42. )
  43. for /f "tokens=1 delims==" %%a in ('set #_# 2^>nul') do set "%%a="
  44. if %v% equ 2 (>nul ping /n 4 0) else (>nul timeout /t 4 /nobreak)
  45. goto begin
复制代码
最后附加功能,帮忙看一下能不能实现:
最好是如果这一组有正常的就用正常的条码填充这一组的"Barcodefailure";如果这一组全部都是NG的,也就是全部是"Barcodefailure"就用上一组正常的条码内容进行填充




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