首页 > 解决方案 > 如何使文本行的第一部分唯一并批量连接第二部分?

问题描述

我的 formatliste_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"
       )

    )

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

标签: batch-filefor-loopif-statement

解决方案


您真正缺少的只是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

推荐阅读