首页 > 解决方案 > 从列表中读取文件名,找到它的计数并将文件名和计数重定向到 windows cmd 中的另一个文件

问题描述

我是 Windows 脚本的初学者,发现很难实现以下场景。任何帮助将不胜感激。提前致谢

我有一个带有文件名列表的输入文件,例如:InputFileName.txt

E:\ABC\File*.csv
E:\ABC\CDF\list.txt

(即文件可以存在于任何目录中,文件名也不必准确。它可以有通配符,因此需要选择匹配的文件)

脚步:

我需要获取 InputFileName.txt 中列出的每个单独文件的计数,并将文件名写入列表中,实际文件名及其计数写入另一个文件,不包括空白行(甚至写入表)。

输出应该看起来像

E:\ABC\File*.csv,E:\ABC\File20191008.csv,200
E:\ABC\CDF\list.txt,E:\ABC\CDF\list.txt,300

代码我刚刚将计数写入另一个文件。尝试了多种方法,但无法获得我需要的前 2 个字段。

代码 :

For /F "tokens=*" %%A in ( 'type E:\dir1\InputFileName.txt) do (
findstr /R . %%A | find /c /v "" >>E:\dir1\OutputFileName.txt)

标签: windowsbatch-file

解决方案


根据您的评论,这似乎是您想要的。

@echo off
setlocal enabledelayedexpansion
for /F "delims=" %%a in ('type E:\dir1\InputFileName.txt') do (
 for /f "delims=" %%f in ('dir /b /s "%%a"') do (
    set "name=%%~nxf"
    if not "!oldname!"=="!name!" (
    set "oldname=!name!"
    for /f %%i in ('dir /b /s "%%~nxf" ^|find /c /v ""') do (
    echo %%a,%%~nxf,%%i >>E:\dir1\OutputFileName.txt
   )
  )
 )
)

推荐阅读