批量检查文件是否存在字符串拼接

问题描述 投票:0回答:1

抱歉,这是我第一次真正批量尝试。我有很多文件需要删除或移动。

以下将给出结果,但我需要对其进行扩展。

@echo off
set /p ll=lowerlimit?
set /p i=increment?
set /p ul=upperlimit?

for /l %%x in (%ll%,%i%,%ul%) do (
    if exist "c:\users\username\folder\subfolder\000%%x_0.jpg" (
        echo "000%%x_0.jpg file found") else (echo "000%%x_0.jpg file does not exist")
)

:end
pause

有一个大错误,例如文件

00001_0.jpg
存在。

我的脚本很愚蠢,因为它会检查

0001_0.jpg
是否存在,并再次检查大于两位数的名称,例如,当文件
000100_0.jpg
可能存在时,它会检查
00100_0.jpg
。将值存储在数组中,了解如何正确批量处理字符串并根据需要删除或删除,这将很有用

batch-file
1个回答
0
投票

可以使用下面的批处理文件来搜索编号为 1 到 9999 的文件,并且始终保留四位数到

_0.jpg

@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "ValueStart=1"
set "ValueIncrement=1"
set "ValueLast=9999"
set /P "ValueStart=Start value (default: %ValueStart%): " 
set /P "ValueIncrement=Increment by: (default: %ValueIncrement%): "
set /P "ValueLast=Last value (default: %ValueLast%): "

set "FolderPath=%USERPROFILE%\folder\subfolder"
setlocal EnableDelayedExpansion
for /L %%G in (%ValueStart%,%ValueIncrement%,%ValueLast%) do (
    if %%G LSS 10000 (
        set "FileName=000%%G"
        set "FileName=!FileName:~-4!_0.jpg"
    ) else set "FileName=%%G_0.jpg"
    if exist "!FolderPath!\!FileName!" (echo Found file: !FileName!) else echo Not exist: !FileName!
)
endlocal

pause
endlocal

我推荐阅读:

要了解所使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完整、仔细地阅读每个命令显示的帮助页面。

  • echo /?
  • endlocal /?
  • for /?
  • if /?
  • pause /?
  • set /?
  • setlocal /?
© www.soinside.com 2019 - 2024. All rights reserved.