Windows CMD 脚本来计算文件和获取文件名

Ron*_*aia 6 windows command-line

我对 Windows CMD 脚本不是很熟悉,我需要编写一个来检查特定文件夹中的文件数量并存储在变量(可能是数组)中找到的文件名。这是我所拥有的(%1 是我作为参数获取的文件夹):

ECHO ### Checking the number of files under %1 ###
for %%x in (%1\pdf*.*) do (
 set file[!numFiles!]=%%~nxf
 set /a numFiles+=1
) 
ECHO ### Number of files found: %numFiles%

for /L %%i in (0,1,2,3,4) do (
   echo !file[%%i]!
)
Run Code Online (Sandbox Code Playgroud)

Dav*_*ill 2

如何计算特定文件夹中的文件数量并将文件名存储在数组中?

您的代码存在很多问题:

  1. 如果稍后要使用它,则需要启用延迟扩展。

  2. 你还没有初始化numFiles

  3. %%~nxf应该%%~nfx

  4. 您的for /l命令的语法错误(应该是start,step,end)。

这是更正后的批处理文件(test.cmd):

@echo off
setlocal enabledelayedexpansion
ECHO ### Checking the number of files under %1 ###
set numFiles=0
for %%x in (%1\pdf*.*) do (
  set file[!numFiles!]=%%~nfx
  set /a numFiles+=1
 ) 
ECHO ### Number of files found: %numFiles%

set /a index=%numFiles%-1
for /L %%i in (0,1,%index%) do (
  echo !file[%%i]!
  )
endlocal
Run Code Online (Sandbox Code Playgroud)

示例用法和输出:

> dir *.pdf
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

21/02/2017  22:53                 0 pdf01.pdf
21/02/2017  22:53                 0 pdf02.pdf
21/02/2017  22:53                 0 pdf03.pdf
               3 File(s)              0 bytes
               0 Dir(s)  1,701,266,092,032 bytes free

> test .
### Checking the number of files under . ###
### Number of files found: 3
F:\test\pdf01.pdf
F:\test\pdf02.pdf
F:\test\pdf03.pdf
Run Code Online (Sandbox Code Playgroud)

进一步阅读

  • Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有内容的绝佳参考。
  • enabledelayedexpansion - 延迟扩展将导致变量在执行时而不是在解析时扩展。
  • for - 有条件地对多个文件执行命令。
  • for /l - 有条件地对一系列数字执行命令。
  • 参数- 命令行参数(或参数)是传递到批处理脚本中的任何值。