Как распаковать файл с именем Dynami c, используя пакетный файл? - PullRequest
0 голосов
/ 18 марта 2020

Все, что я пытаюсь, - это автоматизировать процесс распаковки через пакетный файл и составить такое же расписание, оно работало, когда имя файла указано как stati c (упомянуто ниже)

@echo off
setlocal
cd /d %~dp0
Call :UnZipFile "D:\QlikSense\Data\OBL\FTP\" "D:\QlikSense\Data\OBL\FTP\T56Q_OBL001_20200312111131.zip"
Call :UnZipFile "D:\QlikSense\Data\OBL\FTP\" "D:\QlikSense\Data\OBL\FTP\T56Q_OBL002_20200312111131.zip"

exit /b

:UnZipFile <ExtractTo> <newzipfile>
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs%  echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% echo If NOT fso.FolderExists(%1) Then
>>%vbs% echo fso.CreateFolder(%1)
>>%vbs% echo End If
>>%vbs% echo set objShell = CreateObject("Shell.Application")
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% echo Set fso = Nothing
>>%vbs% echo Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%

timeout 20

Но это не так работает, когда он сделан для Dynami c с использованием '*' (найдите код ниже)

@echo off
setlocal
cd /d %~dp0
Call :UnZipFile "D:\QlikSense\Data\OBL\FTP\" "D:\QlikSense\Data\OBL\FTP\T56Q_OBL001_*.zip\"
Call :UnZipFile "D:\QlikSense\Data\OBL\FTP\" "D:\QlikSense\Data\OBL\FTP\T56Q_OBL002_*.zip\"

exit /b

:UnZipFile <ExtractTo> <newzipfile>
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs%  echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% echo If NOT fso.FolderExists(%1) Then
>>%vbs% echo fso.CreateFolder(%1)
>>%vbs% echo End If
>>%vbs% echo set objShell = CreateObject("Shell.Application")
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% echo Set fso = Nothing
>>%vbs% echo Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%

timeout 20

Ниже приведена ошибка, отражающая случай

C: \ Users \ TECHADMIN \ Appdata \ Local \ Temp \ 4_.vbs (6, 1) Ошибка времени выполнения Microsoft VBScript: требуется объект: 'objShell.NameSpace (...)'

1 Ответ

0 голосов
/ 18 марта 2020
@echo off
setlocal
cd /d "%~dp0"
Call :UnZipFile "D:\QlikSense\Data\OBL\FTP\" "D:\QlikSense\Data\OBL\FTP\T56Q_OBL001_*.zip"
Call :UnZipFile "D:\QlikSense\Data\OBL\FTP\" "D:\QlikSense\Data\OBL\FTP\T56Q_OBL002_*.zip"

exit /b

:UnZipFile <ExtractTo> <NewZipFile>
set "vbs=%temp%\_.vbs"
if exist "%vbs%" del /f /q "%vbs%"

(   echo strExtractTo = WScript.Arguments.Item(0^)
    echo strNewZipFile = WScript.Arguments.Item(1^)
    echo WScript.echo strExtractTo,  strNewZipFile
    echo set objFSO = CreateObject("Scripting.FileSystemObject"^)
    echo if not objFSO.FolderExists(strExtractTo^) Then
    echo   fso.CreateFolder(strExtractTo^)
    echo end if
    echo set objShell = CreateObject("Shell.Application"^)
    echo set FilesInZip = objShell.NameSpace(strNewZipFile^).items
    echo objShell.NameSpace(strExtractTo^).CopyHere(FilesInZip^)
    echo Set objFSO = Nothing
    echo Set objShell = Nothing
) > "%vbs%"

for %%A in ("%~2") do cscript //nologo "%vbs%" "%~1" "%%~A"
if exist "%vbs%" del /f /q "%vbs%"
timeout 20

Добавлена ​​обработка аргументов для VBScript и использование for l oop для обработки подстановочного знака звездочки, используемого в именах файлов zip.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...