如何扫描文件夹并将所有文件名存储在数组变量中,然后遍历数组?

时间:2016-08-24 06:12:31

标签: arrays file batch-file if-statement cmd

我是批处理新手,我正在尝试执行以下操作:

  • 阅读或扫描文件夹
  • 将文件夹中的所有文件名保存在数组变量中(需要保留带或不带扩展名的文件名)
  • 循环遍历该数组,并根据使用IF或CASE语句条件的文件类型创建对特定文件/ bat的调用。示例:如果文件名中包含单词person,则调用特定文件/ bat。

这是我到目前为止所做的:

@echo off

setlocal EnableDelayedExpansion

rem Populate the array with existent files in folder
set i=0
for %%b in (*.*) do (
   set /A   i+=1
   set list[!i!]=%%b

)

set Filesx=%i%

rem Display array elements
for /L %%i in (1,1,%Filesx%) do echo !list[%%i]!

1 个答案:

答案 0 :(得分:0)

... do (
   echo !list[%%i]! | find /i "person" >nul && call specific.bat !list[%%i]!
)

echo !list[%%i]! | find /i "person":找到单词
>nul:忽略输出(我们不需要它,只是错误级别)
&&:如果上一个命令成功(找到了这个词),那么......

你真的需要那个阵列吗?你可以“动态”做到这一点:

for %%b in (*.*) do (
  echo %%b | find /i "person" >nul && call specific.bat "%%b"
)

仅限文件名,使用%%~nb获取全名(包括路径),使用%%~fb(有关更多选项,请参阅for /?