簡體   English   中英

Windows Batch-從文件中獲取第二行並保存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM