需要根据笔式驱动器和文件的可用性将文件提取到笔式驱动器中



我有一个脚本从服务器下载压缩文件,我想将下载的压缩文件提取到连接的笔式驱动器。我曾经运行一个批处理文件来删除清晨以删除现有的zip文件。

下载后并非所有压缩文件都会一直存在,有时只有 2 个文件,因此根据压缩文件和连接的笔式驱动器的可用性,我想提取软件。

以下是可能的闪存驱动器和压缩文件名:

驱动器 = F G H I J downloaded_zipped_files=MHI_AH10,MPR_BH11,MPR_CH12,MHI_DH13,MPR_EH14,MHI_FH15,MHI_GH16,MBA_HH17

我已经尽力了,但没能做到。如果有人知道如何解决这个问题,请帮助我。我也在添加我的批处理文件代码。

注意:文件名将类似于MHI_AH10xxxxx和MPR_BH11xxxxx,因此我将使用通配符(*(来提取指定的文件。如果列表中的第一个文件不存在,那么它应该移动到下一个文件并在第一个笔式驱动器中提取,然后它应该继续检查第二个笔式驱动器是否存在。

这不是完整的代码,需要有逻辑来执行上述操作。

法典:

set drive_list=F G H I J
set test_list[0]=MHI_AH10
set test_list[1]=MPR_BH11
set test_list[2]=MPR_CH12
set test_list[3]=MHI_DH13
set test_list[4]=MPR_EH14
set test_list[5]=MHI_FH15
set test_list[6]=MHI_GH16
set test_list[7]=MBA_HH17
(for %%b in (%drive_list%) do ( 
if exist %%b: (
if exist C:UsersvenkatDocuments%test_list[0]%*.7z (
7z x C:UsersvenkatDocuments%test_list[0]%*.7z -o%%b:
)  
)
))

我已经对数组drive_list进行了更改,因为数组的声明和使用方式test_list一旦在笔式驱动器中提取一个文件,就会中断执行。

以下是修改后的代码:

@echo off 
setlocal enabledelayedexpansion
set drive_list[0]=E
set drive_list[1]=F
set drive_list[2]=G
set drive_list[3]=H
set drive_list[4]=I
set drive_list[5]=J
set drive_list[6]=K
set drive_list[7]=L
set test_list[0]=MHI_AH10
set test_list[1]=MPR_BH11
set test_list[2]=MPR_CH12
set test_list[3]=MHI_DH13
set test_list[4]=MPR_EH14
set test_list[5]=MHI_FH15
set test_list[6]=MHI_GH16
set test_list[7]=MBA_HH17
rem Initializing test_list array index
set /A test_list_array_index=0
rem Initializing Drive array index
set /A drive_array_index=0
:nextdriveloop
echo !test_list_array_index!
for %%b in (!drive_array_index!,1,5) do (

echo Inside first for loop

if exist !drive_list[%%b]!: (

for /l %%i in (!test_list_array_index!,1,7) do ( 

if exist C:UsersvenkatDocuments!test_list[%%i]!*.7z (

7z x C:UsersvenkatDocuments!test_list[%%i]!*.7z -o!drive_list[%%b]!:

set /A "test_list_array_index=%%i + 1"
set /A "drive_array_index=%%b + 1"

goto :nextdriveloop

)
)
)

)

相关内容

最新更新