我是Windows批处理脚本的新手,所以请原谅我的无知。我有一个CSV文件,看起来像这样:
ColumnA,ColumnB,ColumnC
01/02/2015,ABC,111
01/03/2015,DEF,222
01/03/2015,HHH,333
01/05/2015,XYZ,767
该文件中的行数将有所不同,但列数将保持不变。我需要提取日期列A,第1行和日期从列A,最后一行。
在这种情况下,我需要提取2015年1月2日和2015年5月1日。接下来,我要将这两个日期存储在单独的变量中。
我该如何实现?我不知道从哪里开始。我唯一拥有的是:
for /F "tokens=1 delims=," %%s in (IntFlow.csv) do @echo %%s
这行代码剪切了第一列并对其进行回显。我不知道下一步该怎么做。请指教。
使用for /f
循环逐行解析csv文件。使用skip=1
跳过标题行。如果尚未定义第一个变量,则仅设置它。然后只需在每次循环迭代中设置最后一个变量。早晚是对的,对吧?:)
@echo off
setlocal
set "first="
set "last="
for /f "skip=1 usebackq delims=," %%I in ("test.csv") do (
if not defined first set "first=%%~I"
set "last=%%~I"
)
echo %first%
echo %last%
tokens=1
已经是默认行为。usebackq
允许您将文件名括在引号中,因此如果您的csv文件名中包含空格或其他一些不好的字符,它应该可以使用。
我在您的评论中看到您已决定改用PowerShell。这是一个PowerShell脚本,可让您使用日期填充变量。
$csv = ipcsv test.csv
$first = ($csv | select -first 1 | %{ $_.ColumnA })
$last = ($csv | select -last 1 | %{ $_.ColumnA })
$first
$last
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句