Batch file Bat文件将文本文件中的行拆分为多行

Batch file Bat文件将文本文件中的行拆分为多行,batch-file,Batch File,我在每一行上都有应用程序编号以及该应用程序的关联图像 58:58123 image.jpg,image2.jpg 58:58456 image4.jpg @Echo off&(for /f "usebackq tokens=1* delims=:" %%A in ("transact.txt") do For %%C in (%%B) do Echo(%%A,%%C)>Output.csv 我想有一个csv,它将包含唯一的数字和一个相关的图像上的每一行,如 123 image.

我在每一行上都有应用程序编号以及该应用程序的关联图像

58:58123 image.jpg,image2.jpg
58:58456 image4.jpg
@Echo off&(for /f "usebackq tokens=1* delims=:" %%A in ("transact.txt") do For %%C in (%%B) do Echo(%%A,%%C)>Output.csv
我想有一个csv,它将包含唯一的数字和一个相关的图像上的每一行,如

123 image.jpg
123 image2.jpg
456 image4.jpg
我已经创建了bat文件,但它将输出显示为

58:58123 image.jpg
58:58123 image2.jpg
58:58456 image4.jpg
我想删除每行58分58秒

58:58123 image.jpg,image2.jpg
58:58456 image4.jpg
@Echo off&(for /f "usebackq tokens=1* delims=:" %%A in ("transact.txt") do For %%C in (%%B) do Echo(%%A,%%C)>Output.csv
实际产量:

58:58123 image.jpg
58:58123 image2.jpg
58:58456 image4.jpg
预期产出:

123 image.jpg
123 image2.jpg
456 image4.jpg

将所有代码放在一行中是一种不好的做法,因为它很难维护

无论如何,您的代码似乎试图删除前缀(如
58
),它肯定不会返回您描述的实际输出

但是这里有一种可能的方法来做你想做的事情(很可能):

@echo关闭
rem//写入输出文件:
>“Output.csv”(
rem//从输入文件读取并在第一个“:”处拆分:
对于/F“usebackq tokens=1-2*delims=:”%%A in(“transact.txt”)do(
rem//将第一个“:”后面的部分分配给变量:
设置“NUM=%%B”和设置“LIST=%%C”
rem/*启用延迟扩展以能够读取变量
在同一代码块中写入的rem:*/
setlocal EnableDelayedExpansion
rem/*从文件名前的数字中删除前缀,然后
rem在'for'变量中提供它(一个循环迭代):*/
对于(“!NUM:%%A=!”)中的%%D,请执行以下操作(
rem/*修改列表,以便保留文件名中的空格,
rem循环遍历文件名(任何文件名必须包含“,”!:*/
对于(“!LIST:,=”!”)中的%%E,请执行以下操作(
rem/*返回一个又一个文件名,前面有
rem修剪数;切换延迟扩展以
rem避免文件名中出现“!”或“^”的问题:*/
端部
回声(%%~D%%~E)
setlocal EnableDelayedExpansion
)
)
端部
)
)

此脚本还使用了。

您的批处理生成的输出与您发布的输出不同。不清楚您是否要删除固定前缀
58:58
aka 5个字符,或者该前缀是否更改。除了58000之外,这将使您更接近
@Echo off&(for/f“usebackq tokens=1,2*delims=:”%%a in(“transact.txt”)do for%%D in(%C)执行回显(%%B,%%D)>Output.csv