标题: [文本处理] [已解决]批处理如何查找并比对文件中的指定字符串? [打印本页]
作者: fish509008 时间: 2015-12-16 13:53 标题: [已解决]批处理如何查找并比对文件中的指定字符串?
需求如下:
先提供两(多个)个文件。
第一个文件:apprevision.txt(含有app列表及不准确的版本,第三列备注可以忽略)
app名称 版本号 备注
mobilelife_reset 297
mobilelife_unlock 253
mobilelife_usercancellation 298
第二个文件:compile.log(每个app目录都有这个文件,如果没有,就输出该app已停用)
Compile log of application: mobilelife_user cancellation
Version: 1.0 Revision: 32
Compile date/time: 2015-10-22 19:16:32
Elapsed time: 8.63 seconds
Summary: Total of 76 steps and 34 objects compiled.
Total errors(0) and warnings(0).
--- End of compile report ---
具体思路是取apprevision中的app名称和版本,然后将取到的版本和app目录里的版本进行比对,如果不对则输出到result.txt文件中
mobilelife_reset版本不符 实际版本为35
mobilelife_unlock版本不符 实际版本为36
mobilelife_usercancellation已停用
目前仅能把app目录里的实际版本给显示处理,循环部分卡住了,期待各位高手帮忙把后续的给完善下。谢谢了!
备注:app目录就在当前apprevision.txt同一目录里,然后每个app目录里都有个compile.log文件,如果没有目录或者没有文件提示该app已停用即可。
附上本人已写的丁点代码,你们可以无视。- @echo on &color 0a &setlocal enabledelayedexpansion
- pushd "%cd%"
- set n=1
- for /f "skip=1 tokens=3* delims= " %%a in (C:\Edify\ewfapps\install\IVR-main1\compile.log) do (echo %%a >1.txt
- set /a n=!n!+1
- if !n!==2 goto end
- )
- :end
- pause
复制代码
作者: flyinnet9 时间: 2015-12-16 14:09
你敢给一个靠谱点的例子么,app名对不上,版本对不上
app在哪也不知道,我哪知道那个目录是app目录
作者: fish509008 时间: 2015-12-16 14:19
本帖最后由 pcl_test 于 2015-12-16 14:31 编辑
回复 2# flyinnet9
抱歉啊 我上个截图吧
作者: fish509008 时间: 2015-12-16 14:35
附上群里某位大神提供的源码。再次感谢
作者: fish509008 时间: 2015-12-16 14:36
- @echo off & setlocal enabledelayedexpansion
-
- for /f "skip=1 tokens=1,2 delims= " %%i in (apprevision.txt) do (
- if exist "%%i\" (
- for /f "delims=" %%a in ('dir /ad /b') do (
- set dirname=%%a
- if "!dirname!"=="%%i" (
- for /f "usebackq delims=" %%m in ("%%a\compile.log") do (
- set /a n+=1
- if !n!==2 (
- for %%r in (%%m) do set revision=%%r
- if "!revision!" neq "%%j" (
- echo;[%%i]版本不符 实际版本为[!revision!]
- )
- )
- )
- set n=
- )
- )
- ) else echo;[%%i]未启用...
- )
-
- pause & exit /b
复制代码
作者: flyinnet9 时间: 2015-12-16 16:30
- @echo off
- setlocal enabledelayedexpansion
- for /f "skip=1 tokens=1-2" %%a in (apprevision.txt) do (
- if exist "%%a\" (
- if not exist "%%a\compile.log" (
- echo.%%a 已停用
- ) else (
- for /f "tokens=4 delims= " %%c in ('findstr "Revision:" "%%a\compile.log"') do (
- if "%%c"=="%%b" (echo.%%a 版本一致) else (echo.%%a 版本不符 实际版本:%%c)
- )
- )
- ) else (
- echo.%%a 目录不存在
- )
- )
- pause
复制代码
作者: fish509008 时间: 2015-12-17 09:13
回复 6# flyinnet9
感谢!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |