batch-file - 批量将每一行拆分为多行
问题描述
我的 txt 文件如下所示:
A1;A2;A3
B1;B2
我想像这样拆分它:
A1;;;A2
A2;;;A3
A3;;;A3
B1;;;B2
B2;;;B2
规则是:对于每一行,取两个相邻元素并用它们创建一个新的输出行,对于一行的最后一个元素:也创建一个新的输出行,但使用该元素两次。
这是我的尝试:
(
for /f "tokens=1-4 delims=;" %%a in (%FilePath%) do (
for /f "tokens=1-4 delims=;" %%x in (%FilePath%) do (
echo %%a;;;%%y
)
)
)>%FilePath_Final%
但它给出了错误的格式:
A1;;;A2
A1;;;B2
B1;;;A2
B1;;;B2
如何使用批处理命令拆分行以获得预期的结果?
PS:A1、A2、B1等只是一些字符串示例,我可以有各种字符串
以下是文件内容的示例:
XB8998901;XB8998900;8051191;24048271;24048270
XB0134812;XB0134810;XB0134801;XB0134800
XB6312701;XB6312700
XB6314201;XB6314200
输出应如下所示:
XB8998901;;;XB8998900
XB8998900;;;8051191
8051191;;;24048271
24048271;;;24048270
24048270;;;24048270
XB0134812;;;XB0134810
XB0134810;;;XB0134801
XB0134801;;;XB0134800
XB0134800;;;XB0134800
XB6312701;;;XB6312700
XB6312700;;;XB6312700
XB6314201;;;XB6314200
XB6314200;;;XB6314200
解决方案
@echo off
setlocal enabledelayedexpansion
set "last="
(for /f "delims=" %%a in (old.txt) do (
for %%b in (%%a) do (
if defined last echo !last!;;;%%b
set "last=%%b"
)
echo !last!;;;!last!
set "last="
))>new.txt
fc new.txt compare.txt
old.txt(您的示例文件):
XB8998901;XB8998900;8051191;24048271;24048270
XB0134812;XB0134810;XB0134801;XB0134800
XB6312701;XB6312700
XB6314201;XB6314200
compare.txt (您的示例所需的输出):
XB8998901;;;XB8998900
XB8998900;;;8051191
8051191;;;24048271
24048271;;;24048270
24048270;;;24048270
XB0134812;;;XB0134810
XB0134810;;;XB0134801
XB0134801;;;XB0134800
XB0134800;;;XB0134800
XB6312701;;;XB6312700
XB6312700;;;XB6312700
XB6314201;;;XB6314200
XB6314200;;;XB6314200
输出:
Vergleichen der Dateien new.txt und compare.txt
FC: Keine Unterschiede gefunden
(翻译:Comparing files new.txt and compare.txt
; FC: no differences encountered
)
推荐阅读
- wso2 - 尝试登录 WSO2 IoT 服务器时出现身份验证错误 - wso2-iot-3.3.0 中的设备管理控制台
- android - 第一次应用程序运行时的错误堆栈行为(重新启动之前)
- python-3.x - 数据框到字典
- java - 在 ConsumerAwareRebalanceListener 上测试异常
- c# - c# UWP ListView 与水平 ListViews
- r - 获取作为参数传递给函数的函数名称
- woocommerce - 状态更改后 myAccount 中的 woocommerce 更新日期
- c++ - 使用用户定义的参数调用未来/异步并调用类方法
- python - Django Channels 停止使用 self.receive_lock.locked 错误
- groovy - 服务器上的重复流量