我有三个或更多带有子目录的目录,我必须在其中检查和排序数千个名为
"00001_*.jpg"
到 "99999_*.jpg"
的文件。
但为了简单起见,我们将测试 20 张图像的样本。
例如,我有三个父目录
A
、B
和C
。目录B
内有四个图像00017_0.jpg
、00018_0.jpg
、00019_0.jpg
和00020_0.jpg
。我想运行一个脚本来检测这些文件名,例如在目录 A
中并将它们移动到名为 Check
, (A\Check
) 的子目录中。
我尝试将文件名存储到数组中,但我已经陷入困境。我尝试将它们存储到
list_1
中,但是当我 echo
结果时,我什么也没得到 ""
。
我使用参数编辑
B
中目录FolderPath
中图像的路径:default
、default
、20
结果:
Start value (default: 1):
Increment by: (default: 1):
Last value (default: 99999): 20
Not exist: 00001_0.jpg
Not exist: 00002_0.jpg
Not exist: 00003_0.jpg
Not exist: 00004_0.jpg
Not exist: 00005_0.jpg
Not exist: 00006_0.jpg
Not exist: 00007_0.jpg
Not exist: 00008_0.jpg
Not exist: 00009_0.jpg
Not exist: 00010_0.jpg
Not exist: 00011_0.jpg
Not exist: 00012_0.jpg
Not exist: 00013_0.jpg
Not exist: 00014_0.jpg
Not exist: 00015_0.jpg
Not exist: 00016_0.jpg
Found file: 00017_0.jpg
Found file: 00018_0.jpg
Found file: 00019_0.jpg
Found file: 00020_0.jpg
"The length of the array is" 0
Press any key to continue . . .
以下是我对此脚本的改编。
它在目录
B
中找到了文件,但是我对list_1
数组的添加还没有成功,所以我无法将它们移动到Check
子目录; (这部分尚未编写脚本).
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "list_1="
set "ValueStart=1"
set "ValueIncrement=1"
set "ValueLast=99999"
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 100000 (
set "FileName=0000%%G"
set "FileName=!FileName:~-5!_0.jpg"
) else set "FileName=%%G_0.jpg"
if exist "!FolderPath!\!FileName!" (
set "list_1[%%G]=FileName"
echo Found file: !FileName!) else echo Not exist: !FileName!
)
set "x=0"
:SymLoop
if defined list_1[%x%] (
call echo %%list_1[%x%]%%
set /a "x+=1"
GOTO :SymLoop
)
echo "The length of the array is" %x%
pause
endlocal
它将节省我多年的时间。我不需要数组来移动文件,但数组对我来说很重要,因为它们提供了我能够扩展的结构。现在可以通过阵列自动执行移动和许多其他任务。展开下面的脚本可以移动需要检查的图像。这是我再也不用做的众多手动繁重的 Windows 任务之一:) ...
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "List_1="
set "ValueStart=0"
set "ValueIncrement=1"
set "ValueLast=99999"
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 100000 (
set "FileName=0000%%G"
set "FileName=!FileName:~-5!_0.jpg"
) else set "FileName=%%G_0.jpg"
if exist "!FolderPath!\!FileName!" (
set "List_1[%%G]=!FileName!"
set List_1[%%G]=!list_1[%%G]!
echo Found file: !FileName!
) else (
set List_1[%%G]=""
echo Not exist: !FileName!
)
echo List_1[%%G]=!List_1[%%G]!
)
pause
endlocal
结果
Start value (default: 0):
Increment by: (default: 1):
Last value (default: 99999): 20
Not exist: 00000_0.jpg
List_1[0]=""
Not exist: 00001_0.jpg
List_1[1]=""
Not exist: 00002_0.jpg
List_1[2]=""
Not exist: 00003_0.jpg
List_1[3]=""
Not exist: 00004_0.jpg
List_1[4]=""
Not exist: 00005_0.jpg
List_1[5]=""
Not exist: 00006_0.jpg
List_1[6]=""
Not exist: 00007_0.jpg
List_1[7]=""
Not exist: 00008_0.jpg
List_1[8]=""
Not exist: 00009_0.jpg
List_1[9]=""
Not exist: 00010_0.jpg
List_1[10]=""
Not exist: 00011_0.jpg
List_1[11]=""
Not exist: 00012_0.jpg
List_1[12]=""
Not exist: 00013_0.jpg
List_1[13]=""
Not exist: 00014_0.jpg
List_1[14]=""
Not exist: 00015_0.jpg
List_1[15]=""
Not exist: 00016_0.jpg
List_1[16]=""
Found file: 00017_0.jpg
List_1[17]=00017_0.jpg
Found file: 00018_0.jpg
List_1[18]=00018_0.jpg
Found file: 00019_0.jpg
List_1[19]=00019_0.jpg
Found file: 00020_0.jpg
List_1[20]=00020_0.jpg
Press any key to continue . . .