请大神帮忙修改此批处理,目标.log文件不是主文件夹下,而是在主文件夹的最新(按创建时间)子文件夹下面,处理完.log文件之后,.log文件名不能修改还是放在原有子文件夹下面;十分感谢!!!可以给予合理报酬
首先说一下我的整个需求(目前批处理已经能够完成对.log档的修改):
如插图所示:其中红色文字内容是需要求助的;
但现在路径不对,.log文件不是在Repair1和Repair2路径下生成的,而是在它们的子文件夹下面生成的
因为子文件夹会改变
我现在实现起来比较麻烦,隔一段时间要去修改批处理的路径
我就是想能不能让这个批处理更智能一点,自动识别,最新(按创建时间)的子文件夹文件夹
只能去识别Repair1或者Repair2下面最新生成的那个子文件夹
最新生成的子文件夹才是目前工作的文件夹,其他子文件夹是已经工作过的
不能去识别Repair下面所有子文件夹,因为Repair下面有多级子文件夹(如果你能实现只查找第一级子文件夹也可以,第一级子文件夹的数量相对少一点,但是第二级子文件夹的数量非常之多,而且一直在增加的状态)
下面是相关需要修改的原始文档:- @echo off
- setlocal enabledelayedexpansion
- set "f="
- timeout /?>nul 2>&1&&set v=1||set v=2
- :begin
- set "n="
- set "fd="
- set "flag="
- for /f "delims=" %%a in ('dir /b "D:\Repair1\"*.log 2^>nul') do set "t=%%a"&set "fd=D:\Repair1"
- for /f "delims=" %%a in ('dir /b "D:\Repair2\"*.log 2^>nul') do set "t=%%a"&set "fd=D:\Repair2"
- if "%t%" neq "%f%" (
- set "f=%t%"
- for /f "delims=" %%b in ('type "%fd%\!f!"') do (
- set "line=%%b"
- if "!line:-AdditionalPartInfo-=!" neq "%%b" set n=1
- if defined n (
- for /f "tokens=1-8 delims=," %%c in ("%%b") do (
- if "%%i" neq "" (
- if "%%i" neq "BarcodeFailure" (
- set "#_#%%e=%%i"
- ) else set flag=1
- )
- )
- )
- )
- if defined flag (
- set "n="
- (for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%fd%\!f!"') do (
- set "line=#%%c"
- if "!line:-AdditionalPartInfo-=!" neq "#%%c" set n=1
- if defined n (
- if "!line:BarcodeFailure=!" neq "#%%c" (
- set line=!line:~1!
- for /f "tokens=1-8 delims=," %%i in ("%%c") do (
- for /f "delims=" %%i in ("!#_#%%k!") do echo;!line:BarcodeFailure=%%i!
- )
- ) else echo;%%c
- ) else echo;%%c
- ))>"%tmp%\$tmp.txt"
- copy "%tmp%\$tmp.txt" "%fd%\!f!" /y
- ) else echo;"%fd%\!f!" no BarcodeFailure
- )
-
- for /f "tokens=1 delims==" %%a in ('set #_# 2^>nul') do set "%%a="
- if %v% equ 2 (>nul ping /n 4 0) else (>nul timeout /t 4 /nobreak)
- goto begin
复制代码 最后附加功能,帮忙看一下能不能实现:
最好是如果这一组有正常的就用正常的条码填充这一组的"Barcodefailure";如果这一组全部都是NG的,也就是全部是"Barcodefailure"就用上一组正常的条码内容进行填充 |