检查数组元素(文件)是否具有特定扩展名

时间:2017-05-29 14:08:22

标签: batch-file scripting

我正在尝试编写执行以下操作的代码。我在一个具有特定扩展名的目录中有一些文件。我制作了一个包含所有这些的矢量。现在我想根据扩展名将每个文件重命名为其他文件。所以为此,我试图用for循环来创建向量,在其中检查每个元素扩展。 现在我不会重命名它只是在找到带有.elf扩展名的文件时在屏幕上回显它。我写了这段代码,但我没有回音,因为我的目录中没有.elf文件。请帮我改正一下。感谢。

@echo off
setlocal enabledelayedexpansion

cd C:\Users\uidr0938\Desktop\Copy
set path=C:\Users\uidr0938\Desktop\Copy

set /a index=0

for /r %%i in (*) do (
    set value[!index!]=%%i
    set /a index+=1
)

set /a limit=%index%-2

for /l %%a in (0;1;%limit%) do (
    if !value[%%a]! equ *.elf (
        echo !value[%%a]!
    )
)





endlocal

2 个答案:

答案 0 :(得分:2)

尝试:

....
for /l %%a in (0;1;%limit%) do (
    if "!value[%%a]:~-4!" equ ".elf" (
        echo !value[%%a]!
    )
)

比较字符串时,您无法使用通配符。在这里您可以看到有关批处理substrings的一些示例

答案 1 :(得分:1)

这是一种略有不同的做法。

@IF NOT EXIST "%USERPROFILE%\Desktop\Copy\" @EXIT/B

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

SET "_path=%USERPROFILE%\Desktop\Copy"

SET "_index=0"
FOR /F "DELIMS=" %%A IN ('WHERE/R "%_path%" * 2^>NUL') DO (SET/A "_index+=1"
    SET "_value[!_index!]=%%A")
IF %_index% EQU 0 EXIT/B

FOR /F "TOKENS=1* DELIMS==" %%A IN ('SET _value['
) DO IF /I "%%~xB"==".elf" ECHO %%B

PAUSE