CMD-文件的透视/转置行[例如,转换1500行(x1列)-->;500行(x3列)]

CMD-文件的透视/转置行[例如,转换1500行(x1列)-->;500行(x3列)],cmd,foreach,pivot,transpose,Cmd,Foreach,Pivot,Transpose,我如何“透视”或转换文件(即将单列列表转换为数据表) 目前… VideoA.name VideoA.size VideoA.bitrate VideoB.name VideoB.size VideoB.bitrate ... VideoA.name, VideoA.size, VideoA.bitrate VideoB.name, VideoB.size, VideoB.bitrate 所需… VideoA.name VideoA.size VideoA.bitrate VideoB.nam

我如何“透视”或转换文件(即将单列列表转换为数据表)

目前…

VideoA.name
VideoA.size
VideoA.bitrate
VideoB.name
VideoB.size
VideoB.bitrate
...
VideoA.name, VideoA.size, VideoA.bitrate
VideoB.name, VideoB.size, VideoB.bitrate
所需…

VideoA.name
VideoA.size
VideoA.bitrate
VideoB.name
VideoB.size
VideoB.bitrate
...
VideoA.name, VideoA.size, VideoA.bitrate
VideoB.name, VideoB.size, VideoB.bitrate
名称 大小 比特率 视频名称 尺寸 视频A比特率 视频b.名称 B.尺寸 视频比特率 使用“标准方式”(
for/f
)逐行读取文件,并通过计数器进行扩展。将该行添加到字符串(
),后跟逗号(或任何要用作分隔符的内容),然后增加计数器。除了第三行。然后打印字符串加上当前行,重置计数器和字符串,然后重复

@echo off
setlocal enabledelayedexpansion
set "line="
set count=0
(for /f "delims=" %%a in (test.txt) do (
  set /a count+=1
  if !count! equ 3 (
    echo !line!%%a
    set "line=" 
    set count=0
  ) else (
    set line=!line!%%a,
  )
))>test.csv

下面是对由提供的代码的轻微调整,允许将文件名和行数传递到脚本中

ColumiseFile.cmd
----------------
@回音
SETLOCAL enabledelayedexpansion
REM::用法-----------------------------------------------------------------
REM ColumiseFile[1]File.txt[2]NumOfLines
REM>将每n行连接成1行,将结果导出到File.csv
设置“文件=%1”
设置/A行=%2
REM::MAIN-------------------------------------------------------------------
多亏了斯蒂芬[https://stackoverflow.com/a/67664755/15919675]
REM循环输入文件,将每n行压缩为1行
设置“行=”
设置计数=0
(对于/f“delims=“%a in(%File%)do(
设置/a计数+=1
如果!计数!相等%line%(
回音!线路!%%a
设置“行=”
设置计数=0
)否则(
设置行=!行!%%a,
)
REM::输出-----------------------------------------------------------------
REM在与源.txt文件相同的位置创建.csv
))>%~dpn1.csv

我会问一个不同的“为什么”:你为什么不改变
getProps.bat
以给出所需的输出,而不是用另一个脚本对其进行后处理?嗨@Stephan,哈哈,这是一个公平的问题,我在写这篇文章时也发生了同样的事情。。我决定尝试用这种方式解决问题(至少目前是这样)的主要原因有两个:1️⃣ getProps实际上是一个非常有用的副本,我已经对它进行了改进,但由于它使用Jscript(已经12年没有更新过),开发有时会非常痛苦。2.️⃣ 我认为将列表“透视”成多列的能力在未来的情况下可能会很有用/可重用。PS-最终,我在过去20多次中解决这一问题的方法是将单列数据拉入Excel,并使用、行()的组合,将每1、4、7等行拉入列1,然后每2、5、8行拉入列2,等等——虽然这是可行的,但如果我能35; Stephan(对@you来说似乎不太可能,但希望你看到这条消息),我希望不必有一个单独的“output processor.xlsx”文件并将此函数嵌入到我的脚本中,我只是说。。。它工作得很好,非常感谢。。重新使用此脚本的能力将在将来为我节省数小时!仅供参考:我已经稍微调整了您的解决方案,使其通用化(参数化文件名和行数)。我将上传此变体以供参考/任何其他可能需要该代码的人,但非常高兴(正确地)给予您信任并接受您的答案!再次感谢