|
|
发表于 2024-12-3 15:42:49
|
显示全部楼层
本帖最后由 aloha20200628 于 2024-12-3 22:21 编辑
回复 1# 思想之翼
批处调用 findstr 可以拿下,代码量略多》先构建每个目标文件(d:\data\1.txt, d:\data\2.txt)对应的变量字典,再相互比对每本字典的键名及其键值,导出三个结果列表(a.txt, b.txt, c.txt)...
- @echo off &cd /d "d:\data" &del /q "a.txt", "b.txt", "c.txt" 2>nul
- setlocal &set "F1=1.txt" &set "F2=2.txt"
- (call :xx "%F1%") & (call :xx "%F2%")
- (for /f "delims=" %%a in ('findstr /vig:"_%F1%.0" "_%F2%.0" ') do set/p="%%a "<nul)>"b.txt"
- (for /f "delims=" %%a in ('findstr /vig:"_%F2%.0" "_%F1%.0" ') do set/p="%%a "<nul)>"a.txt"
- for /f "usebackq tokens=1,2 delims==" %%a in ("_%F1%.1") do (
- for /f "tokens=1,2 delims==" %%x in ('findstr /lic:"%%~a" "_%F2%.1" ') do if %%b equ %%y (set/p="%%a "<nul>>"c.txt") else if %%b gtr %%y (set/p="%%a "<nul>>"a.txt") else (set/p="%%a "<nul>>"b.txt")
- )
- del/q "_%F1%.?" "_%F2%.?"&pause&exit/b
- :xx
- setlocal enabledelayedexpansion
- for /f "usebackq delims=" %%a in ("%~1") do for %%x in (%%a) do if defined _%%x (set/a "_%%x+=1") else (set "_%%x=1" &set "all=!all!,_%%x")
- (for %%a in (!all!) do set "a=%%a"&echo,!a:~1!)>"_%~1.0"
- (for %%a in (!all!) do set "a=%%a"&echo,!a:~1!=!%%a!)>"_%~1.1"
- endlocal&exit/b
复制代码 |
评分
-
查看全部评分
|