输出文件名和文本文件中目录的计数 - windows

时间:2017-11-16 08:34:33

标签: windows batch-file

我有一个批处理输出文件名和文件名,文件名在文本文件中具有相同的前缀和日期。

E.g。

  

Q1231111.zip

     

Q1241111.zip

其中:

  • Q123 - 是前缀
  • 1111 - 是约会。

我想输出如下:

  

123:1

     

124:1

     

125:0

但是批处理文件无法输出最后一个。我想看到文件存在所以我需要0输出。

这是我的代码:

@echo off
setlocal EnableExtensions
for %%I in ("Z:\StoreDataJDA\Q1231111.zip") do call :CountFile "%%~nI"
for %%I in ("Z:\StoreDataJDA\Q1241111.zip") do call :CountFile "%%~nI"
for %%I in ("Z:\StoreDataJDA\Q1251111.zip") do call :CountFile "%%~nI"

for /F "tokens=2,3 delims=#=" %%I in ('set Group# 2^>nul') do echo %%I: %%J >>count.txt
endlocal
goto :EOF

:CountFile
set "FileName=%~1"
set "FileGroup=%FileName:~1,4%"
if "Group#%FileGroup%" == "" (
    set "Group#%FileGroup%=1"
) else (
    set /A Group#%FileGroup%+=1
)
goto :EOF
pause

提前致谢!

1 个答案:

答案 0 :(得分:0)

根据您的描述,很难确切地说出您在寻找什么。但是通过查看一年前非常相似的问题,以及格哈德的评论,我认为你在寻找的是:

计算具有给定前缀的文件数,每个文件具有不同的日期后缀。

我认为应该这样做:

@echo off
setlocal EnableExtensions
set "Group#123=0" & for %%I in ("Z:\StoreDataJDA\Q123????.zip") do call :CountFile "%%~nI"
set "Group#124=0" & for %%I in ("Z:\StoreDataJDA\Q124????.zip") do call :CountFile "%%~nI"
set "Group#125=0" & for %%I in ("Z:\StoreDataJDA\Q125????.zip") do call :CountFile "%%~nI"

(for /F "tokens=2,3 delims=#=" %%I in ('set Group# 2^>nul') do echo %%I: %%J)>count.txt
endlocal
goto :EOF

:CountFile
set "FileName=%~1"
set "FileGroup=%FileName:~1,3%"
set /A Group#%FileGroup%+=1
goto :EOF