Пакетный 7zip, Zip файл в архив без каких-либо папок - PullRequest
0 голосов
/ 27 февраля 2019

Я новичок в партии, и в настоящее время практикуюсь для создания сценария автоматизации.Я застрял с этим прямо сейчас.Я хочу, чтобы zip-файл содержал только tm_user.data, но мои коды будут архивировать его как Fame \ tm_user.data.Буду очень признателен, если кто-нибудь из вас сможет мне помочь с этим.

Переменные

set default_folder_name=Main Folder
set tm_folder_name=TM Folder
set local_dir=C:\%default_folder_name%
set tm_dir=%local_dir%\%tm_folder_name%

Основная часть

set /p id="Enter ID: "
set d = "tm_user.data"

if exist "%tm_dir%\%id%\Fame\%d%" (
    "C:\Program Files\7-Zip\7z.exe" a -tzip "%tm_dir%\%id%\Fame\%id%_fame.zip" "%tm_dir%\%id%\Fame\%d%"
    echo Process completed...
    timeout 2
    start "launch folder" "%tm_dir%\%id%\Fame"
    exit
) else (
        echo Error: %d% not found, please try again later!!
        timeout 5
        exit
    )
)

1 Ответ

0 голосов
/ 27 февраля 2019

Несколько рекомендаций для командных файлов.

  1. Не ставьте пробелы по обе стороны от символа равенства в команде SET.Пробелы перед символом равенства становятся частью имени переменной, а пробелы после того, как символ равенства присваивается переменной.
  2. Не назначайте кавычки переменным, а используйте их для окружения назначения, чтобы защитить специальные символы и от назначениязавершающие пробелы до конца переменной.

Я решил использовать команды PUSHD и POPD.Команда PUSHD устанавливает рабочий каталог и сохраняет предыдущий каталог в стеке.Команда POPD возвращает обратно в предыдущий сохраненный каталог.Используя эту технику, вам не нужно указывать пути в команде 7zip.

@echo off
set "default_folder_name=Main Folder"
set "tm_folder_name=TM Folder"
set "local_dir=C:\%default_folder_name%"
set "tm_dir=%local_dir%\%tm_folder_name%"

set /p "id=Enter ID: "
set "d=tm_user.data"

if exist "%tm_dir%\%id%\Fame\%d%" (
    pushd "%tm_dir%\%id%\Fame"
    "C:\Program Files\7-Zip\7z.exe" a -tzip "%id%_fame.zip" "%d%"
    echo Process completed...
    timeout 2
    start .
    popd
    exit
) else (
    echo Error: %d% not found, please try again later!!
    timeout 5
    exit
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...