如何使文本行的第一部分唯一,并批量连接第二部分?

时间:2018-08-07 16:19:46

标签: batch-file for-loop if-statement

我的格式liste_droid.txt中包含以下几行:

Z:\15_Testdateien\jhove_Script_fuer_MIX-Verzeichnisse\testfiles\1002779294_sf_droid_no_match.pdf$fmt/95
Z:\15_Testdateien\jhove_Script_fuer_MIX-Verzeichnisse\testfiles\1002779294_sf_droid_no_match.pdf$fmt/477
Z:\15_Testdateien\jhove_Script_fuer_MIX-Verzeichnisse\testfiles\1002779294_sf_droid_no_match.pdf$fmt/354

重复$的第一部分,该部分必须唯一。 $之后的第二部分总是不同的。 因此,我需要的是转换为与$

之后的行的所有第二部分串联的唯一路径
Z:\15_Testdateien\jhove_Script_fuer_MIX-Verzeichnisse\testfiles\1002779294_sf_droid_no_match.pdf$fmt/95$fmt/477$fmt/354

   @echo off
    setlocal EnableDelayedExpansion
    set "prevLine="
    for /F "tokens=1,2 delims=$" %%a in (formatliste_droid.txt) do (
       if "%%a" neq "!prevLine!" (
          echo %%a$%%b>>_formatliste_droid.txt
          set "prevLine=%%a"
       )

    )

使用此代码,我可以创建唯一的行,但是$之后的部分会丢失,除了第一行。有没有办法用唯一的路径将它们全部连接起来?我总是需要检查路径是否相同,然后使它们唯一并与$

之后的所有结果连接

1 个答案:

答案 0 :(得分:1)

您真正想念的就是使用ELSE逻辑在相等和不相等时做某事。

@echo off
setlocal EnableDelayedExpansion
set "prevLine="
set "newLine="
(for /F "tokens=1,2 delims=$" %%a in (formatliste_droid.txt) do (
    if "%%a"=="!prevLine!" (
        set "newline=!newline!$%%b"
    ) ELSE (
        IF DEFINED newline echo !newline!
        set "newline=%%a$%%b"
    )
    set "prevline=%%a"
)
echo !newline!
)>_formatliste_droid.txt