批处理文件重命名.txt以包含行数

时间:2019-06-17 19:20:29

标签: batch-file count rename

我有一个例程,它每小时发送一次名为“ orders.txt”的通用.txt文件。收到它们后,我想运行一个批处理文件以将该文件重命名为:orders_DDMMYYYYMMSS_XXX.txt,其中XXX是原始文件中包含的总行数

到目前为止,我已经弄清楚了如何添加日期/时间戳,但没有添加行数。

提前谢谢!

ren *.txt Completed_Orders_%date:~10,4%%date:~7,2%%date:~4,2%%time:~0,2%%time:~3,2%.txt

2 个答案:

答案 0 :(得分:0)

我这样做:

set file=*.txt
set /a cnt=0
for /f %%a in ('type "%file%"^|find "" /v /c') do set /a cnt=%%a
ren *.txt "Completed_Orders_%date:~10,4%%date:~7,2%%date:~4,2%%time:~0,2%%time:~3,2%_%cnt%.txt"

答案 1 :(得分:0)

这就是我要做的:

@echo off
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set "datetime=%%I"
set "datetime=%datetime:~0,12%"

for %%F in (*.txt) do (
  for /f %%a in ('type "%%F"^|find "" /v /c') do (
    ECHO ren "%%F" "Completed_Orders_%%~nF_%datetime%_%%a.new
  )
)

更改:

  • 获取日期/时间字符串的另一种方式,而无需依赖于区域设置
  • 围绕for %%F的循环来处理每个*.txt文件
  • 将原始文件名(%%~nF)保留为新名称的一部分
  • 重命名文件的另一个扩展名(以避免一次又一次地对其进行重新处理)最好在开始时过滤要重命名的文件,但我不知道它们的外观(而不是{{1 }}只匹配预处理文件的东西
  • 使用*.txt撤消了ren命令。故障排除后,请移除ECHO(如果确定可以正常运行)