[英]Windows Batch - Get the second line from file and save it
我有一个.csv文件(source.csv),其中包含以下内容:
_Name_;_Id_
IQ-000011;a0A4E000001m9UeUAI
IQ-000010;a0A4E000001m9EhUAI
IQ-000009;a0A4E000001m7v5UAA
我想要的是将第二行 (以IQ-000011
) 附加到另一个文件(target.csv),或者将要创建的新文件 (由前两行组成) ( _Name_;_Id_
标头+ IQ-000011
行)。 这必须在Windows 10计算机上批量完成。
我试过使用set /p
和下面的脚本,但是无法正常工作。 我想不用 set /p
来做。 我该怎么做?
这是我尝试使用的脚本:
3<source.csv (
set /p line1= <&3
set /p line2= <&3
)
echo %line2% >> target.csv
我无法通过您的问题来告诉您,但这是您要实现的目标吗?
@Set "line2="&((Set/P "="&Set/P "line2=")<"source.csv") 2>Nul
@If Defined line2 (Set/P "=%line2%"<Nul&Echo=)>>"target.csv"
因为您可能可以在不使用Set /P
情况下从批处理文件中执行以下操作:
@For /F "UseBackQ Skip=1 Delims=" %%A In ("source.csv")Do @(Echo=%%A)>>"target.csv"&Exit/B
这是一条将产生.csv文件的第一行数据的命令。
FOR /F "delims=" %%a IN ('powershell -NoL -NoP "(Get-Content '.\source.csv')[1]"') DO (SET "LINE2=%%~a")
ECHO LINE2 is set to %LINE2%
另一种可能更明显的方法是使用Select-Object
获取所需的行。
FOR /F "delims=" %%a IN ('powershell -NoL -NoP "Get-Content '.\source.csv' | Select-Object -Skip 1 -First 1"') DO (SET "LINE2=%%~a")
当然,如果脚本是用PowerShell编写的,则更加简单明了。
$line2 = (Get-Content '.\source.csv')[1]
$line2 = Get-Content '.\source.csv' | Select-Object -Skip 1 -First 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.