我正在尝试编写执行以下操作的代码。我在一个具有特定扩展名的目录中有一些文件。我制作了一个包含所有这些的矢量。现在我想根据扩展名将每个文件重命名为其他文件。所以为此,我试图用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
答案 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