batch-file - 如何使文本行的第一部分唯一并批量连接第二部分?
问题描述
我的 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"
)
)
使用此代码,我可以制作唯一的行,但 $ 之后的部分行会丢失,除了第一行。有没有办法用唯一的路径连接它们?我总是需要检查是否有相同的路径,然后将它们与 $ 之后的所有结果进行唯一的连接
解决方案
您真正缺少的只是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
推荐阅读
- python - 使用 Django/Python 创建初学者应用程序:ModuleNotFoundError: No module named 'pages'
- javascript - react-native - 图像未在 Android 上呈现
- linux - Ubuntu 16.04 上的 ng 服务问题
- for-loop - 我的 for of 循环在 1 次迭代后一直停止
- tensorflow - 可视化卷积层的权重
- python - 摆脱 Pandas DF 上的电话号码扩展
- delphi - 如何设置 TControl 的比例?
- python - 给定一个整数,它的 varint 编码有多大?
- kdb - KDB - 历史表 - 什么是“正确”的做法?
- python-3.x - Pandas 中按月进行的 RFM 分析