Автоматически открывать содержимое ZIP-файла после загрузки - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь написать командный файл, который будет выполняться файловым наблюдателем после загрузки zip-файла. После загрузки файл распаковывается с тем же именем, а затем файл zip удаляется, оставляя только папку с файлом и один файл PDF внутри. Мне просто нужна команда, чтобы выполнить это действие для того же файла, который был распакован.

7z x -oC:\Users\"user"\Downloads\* C:\Users\"user"\Downloads\*.zip

del C:\Users\"user"\Downloads\*.zip

"command opening the file in the unzipped folder"

exit

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019
@echo off
setlocal

:: Start in this dir.
cd /d "%userprofile%\Downloads" || exit /b 1

:: Dir where 7z extracts to.
set "extractdir=unzip_tmp"

:: Zips move here if files or folders exist in cd.
set "faildir=unzip_fail"

rem Continue only if zip files exist.
if not exist *.zip (
    echo No zip files
    exit /b 0
)

for %%A in (*.zip) do (
    set "fail="

    rem Unzip with 7z.
    echo Unzip:  "%%~nxA"
    7z x -o"%extractdir%" "%%~nxA" >nul

    if not errorlevel 1 (
        pushd "%extractdir%" && (

            rem Check if files or folders exist in parent dir.
            for /f "delims=" %%B in ('dir /b') do (
                if exist  "..\%%~B" (
                    echo Exist: "..\%%~B"
                    set "fail=defined"
                )
            )

            rem Open PDF file.
            for /r %%B in (*.pdf) do (
                echo Open:   "%%~nxB"
                start "" /wait "%%~fB"
            )

            rem Move files or folders to parent dir.
            if not defined fail for /f "delims=" %%B in ('dir /b') do (
                echo Move:   "%%~B"
                move "%%~B" .. >nul
            )

            popd
        )

        rem Cleanup.
        if defined fail (
            if not exist "%faildir%" (
                echo Create: "%faildir%"
                md "%faildir%"
            )

            echo Remove: "%extractdir%"
            rd "%extractdir%" /s /q

            echo Move:   "%%~nxA"
            move "%%~nxA" "%faildir%" >nul
        ) else (
            echo Remove: "%%~nxA"
            del "%%~nxA" >nul
        )
    )
)

rem Final cleanup.
if exist "%extractdir%" (
    echo Remove: "%extractdir%"
    rd "%extractdir%" /s /q
)

Используется предустановленный каталог для распаковки zip-файлов.Переменная с именем extractdir содержит имя папки для использования.Предустановленный каталог позволяет искать файлы PDF по изолированному пути.

Сценарий довольно устный, поэтому можно увидеть, что распаковано, перемещено и т. Д.

Операция с кодом:

  • Изменить каталог на Downloads каталог.
  • Выйти, если нет zip-файлов.
  • Найти zip-файл.
  • Извлечь из zip-файла в %extractdir%.
  • Проверьте, существуют ли извлеченные файлы и папки в родительском каталоге.Если это так, задайте для fail значение.
  • Выполните рекурсивный поиск файлов PDF и откройте их.
  • , если fail не определено, переместите файлы и папки в родительский каталог.
  • Очистите, удалив zip-файл или удалив %extractdir% и переместив zip-файл в %faildir%, если определен сбой.
  • В конце удалите %extractdir%, если он существует, чтобы он не мог испортить следующий запуск.
0 голосов
/ 04 апреля 2019

Используйте FOR , если у вас есть несколько zip-файлов, он будет перебирать их все.

@echo off
for %%I in ("%UserProfile%\Downloads\*.zip") do (
    "%ProgramFiles%\7-Zip\7z.exe" e -aoa "-o%%~dpI" -y -- "%%I"
    if not errorlevel 1 (
        del "%%I"
        if exist "%%~dpnI.pdf" start "" "%%~dpnI.pdf"
    )
)

Этот скрипт говорит, что здесь указан путь загрузки.Для каждого PDF-файла в этом пути разархивируйте, а затем удалите zip-файл и откройте любой разархивированный PDF-файл.

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