日期:2014-05-17  浏览次数:20871 次

关于文件名分段的问题
2个文件夹,A文件夹里面的文件名是20111112112323-0000004-XXXXXXXX-b309234.dat.Tdat
B文件内文件名是20111112102433-XXXXXXXX-XXXXXXXX-0000004.Tdat(这两个文件夹都有很多文件)
说明一下这两类文件的文件名前面是代表一个时间,现在要做的是将A文件夹的第二个字段和B文件夹中的第四个字段比较(即00000004和00000004)如果是一样的话,就将那两个时间输出到result目录
20111112112323    20111112102433
....
我这边有比较这两个时间段的脚本了,这个循环应该怎么写,使读一行比较一次,将result的时间点算出差值,导出到新的文件result2.txt
有点复杂,给点思路也行,高手帮帮忙
------解决方案--------------------
你这个没必要反复读取吧,一次性输出结果就行,给你写了个你试试看

比如你的A和B文件夹在C盘,对比差值单位为秒,输出result.txt会生成在批处理同一路径下


@echo off

::赋值A文件夹路径
set Apath=C:\A

::赋值B文件夹路径
set Bpath=C:\B

::赋值返回结果文件路径
set rFile=.\result.txt

if exist %rFile% (del %rFile%)

echo B=WScript.Arguments(0)>tmp.vbs
echo A=WScript.Arguments(1)>>tmp.vbs
echo A=Left(A,4)^&"-"^&Mid(A,5,2)^&"-"^&Mid(A,7,2)^&" "^&Mid(A,9,2)^&":"^&Mid(A,11,2)^&":"^&Right(A,2)>>tmp.vbs
echo B=Left(B,4)^&"-"^&Mid(B,5,2)^&"-"^&Mid(B,7,2)^&" "^&Mid(B,9,2)^&":"^&Mid(B,11,2)^&":"^&Right(B,2)>>tmp.vbs
echo Wscript.Echo DateDiff("s", B, A)>>tmp.vbs

for /f "tokens=1,2 delims=-" %%a in ('dir /b/a-d %Apath%') do (
 for /f "tokens=1 delims=-" %%i in ('dir /b/a-d %Bpath%\*-*-*-%%b.Tdat') do (
  if "%%i" neq "" (
   for /f %%s in ('cscript /nologo tmp.vbs %%i %%a') do (echo %%a %%i 差值:%%s 秒>>%rFile%)
  )
 )
)
del /f /q tmp.vbs
pause



------解决方案--------------------
楼主发错版块了吧,帮你移一下吧