如何使用批处理文件根据日期写入.csv文件中的特定行?

时间:2016-01-26 14:25:35

标签: csv batch-file

我对批处理文件很新,我试图找到一种方法来构建一个计数批处理文件,该文件将增加.csv文件中的数字 - 但它必须在正确的行上执行,基于日期。所以我希望我的.csv文件看起来像这样:

2015,10,345
2015,11,287
2015,12,237
2016,01,35

它目前是2016年1月,所以每次我的文件都在本月运行时,我希望它在最后一行添加1。当它到达二月份时,我希望用2016,02,1添加一个新行,然后添加到那个等等。

就像我说的,我对此很新!我知道批处理文件的基础知识,并试图找到答案,人们已经问过类似的事情,我已经尝试分解响应以找出我需要做的事情,但我无法弄清楚从哪里开始!

我想我需要开始使用FOR / F做一些事情并将其设置为跳过不符合某些条件的行?

1 个答案:

答案 0 :(得分:1)

批处理没有任何可以轻松编辑文本文件或使用日期的命令。因此,您必须通过一系列非常简单的步骤构建解决方案。

@echo off
setlocal

set "file=test.txt"

:: Get current year and month
for /f "delims=. tokens=1,2" %%A in (
  'wmic os get localDateTime'
) do if "%%B" neq "" set ts=%%A
set "yr=%ts:~0,4%"
set "mo=%ts:~4,2%"

:: Get current count for this month and add 1
set "cnt=0"
for /f "delims=, tokens=3" %%N in (
  'findstr "^%yr%,%mo%," "%file%"'
) do set /a "cnt=%%N+1"

:: Create a new file consisting of all but the current month count,
:: plus the new month count
>"%file%.new" (
  findstr /v "^%yr%,%mo%," "%file%"
  echo %yr%,%mo%,%cnt%
)

:: Move the new file to the original name
move "%file%.new" "%file%" >nul