从列中读取数据并将其与当前时间

时间:2018-02-15 11:11:30

标签: batch-file

我是编码和尝试学习和创新的新手。完成自动化程序。我有.csv文件,其中包含

"411|487","41164","48036"

第二栏" 41164"是进程完成的秒数。因此,例如,如果时间是14:07,那么此列将是14 * 60 * 60 + 07 * 60 = 50820

行中的第三列" 48036"是应该重复的过程的秒数。因此,如果当前时间到秒数大于COLUMN3,我的宏程序会重复该列进程。我的问题是我有很多行,我使用的宏程序无法进行总计算以找出应该重复哪些行的过程。它会一个接一个地尝试找到它们,这意味着浪费很多时间,所以我应该让csv做好准备。使用下面的代码

For /F "UseBackQ Tokens=3 Delims=, " %%A In ("example.csv") Do (
    Echo %%~A)>>"example2.csv"

我获取了example.csv中的所有column3数据,并将其写入带有引号的example2.csv中,然后将其写入相同内容,我尝试将当前时间计算为秒,并将其从%%〜A中减去< / p>

set hour=%TIME:~0,2%
set minute=%TIME:~3,2%
set /a hourtosec=%hour%*60*60
set /a minutetosec=%minute%*60
set /a totalsec=%hourtosec% + %minutetosec%
set /a repeat=%AA-%totalsec%
Echo %repeat%)>>"example2.csv"

但它不起作用。重复输出错误。如何从%AA中减去%totalsec%并将其写入文件?

1 个答案:

答案 0 :(得分:1)

以下是您的示例,输出到新文件:

EditText

您还可以附加到现有输出文件,此版本也使用延迟扩展

@Echo Off
Set "Inp=example.csv"
Set "Out=example2.csv"
If Not Exist "%Inp%" Exit /B
Set "Repeat="
Set "Now=%TIME%"
(   For /F "UseBackQ Tokens=3 Delims=," %%A In ("%Inp%") Do (Echo %%~A
        Set /A "Repeat=%%~A-((100%Now:~,2%%%100)*60*60)+(100%Now:~3,2%%%100)*60)"
        Call Echo %%Repeat%%))>"%Out%"
If Not Defined Repeat Del "%Out%"