2015-07-24 2 views
0

Я проверил пакетный скрипт для архивации данных на моей локальной машине, изменив переменную пути, чтобы ссылаться на местоположение пакета 7zip.Возможно ли использовать автономный файл 7zip (7za.exe) для архивирования данных без изменения переменной пути?

Я использовал следующий код для архивирования.

7za a -tzip \\tm1data-studio-dev\wds\WDS_DISTRIBUTION_01\TM1\USER_FILES\Target\Archival_%DD%_%MM%_%YYYY%_%HH%_%MN%.zip \\tm1data-studio-dev\wds\WDS_DISTRIBUTION_01\TM1\USER_FILES\Intermediate\ 

Есть ли способ, которым я могу использовать 7za.exe без изменения переменной пути?

Заранее благодарен!

+0

если 7za находится в том же каталоге, что и текущий каталог сценариев/консолей. Хотя изменение пути в скрипте повлияет только на текущий сеанс cmd. В чем проблема использования 'SET PATH =% PATH%; c: \ something'? – npocmaka

+0

Файл 7za.exe и командный скрипт присутствуют в одном месте. :(Может ли быть так, что команда 7zip не работает из-за общей среды? – theitpushover

+0

Возможно, что '7za.exe' нуждается в некоторых DLL-файлах или подобном из своего домашнего каталога (у меня его нет на моей текущей машине check) .Или включить их в текущий каталог или, если вы не хотите постоянно изменять «PATH», вы можете использовать 'setlocal' перед этим, поэтому изменения применяются только в пакетном файле. – TripeHound

ответ

0

7za.exe является автономной версией 7-Zip, которая не требует дополнительных DLL.

С 7za.exe хранятся всегда в том же каталоге, что и пакетный файл, я предлагаю использовать:

"%~dp0\7za.exe" a -tzip "\\tm1data-studio-dev\wds\WDS_DISTRIBUTION_01\TM1\USER_FILES\Target\Archival_%DD%_%MM%_%YYYY%_%HH%_%MN%.zip" "\\tm1data-studio-dev\wds\WDS_DISTRIBUTION_01\TM1\USER_FILES\Intermediate" 

%~dp0 заменяется интерпретатор командной строки на выполнение пакетного файла на диск и путь командного файла заканчивающийся обратным слэшем. Запустив в окне командной строки call /?, справка этой команды выводится с объяснением %~dp0. Это полезно, если текущий рабочий каталог при исполнении командного файла отличается от каталога пакетного файла и 7za.exe.

Запустив командный файл из окна командной строки и с первой строкой, измененной с @echo off на @echo on, если она вообще присутствует, можно увидеть, что делает интерпретатор командной строки.

Далее каждая модификация переменных среды в пакетном файле видна только для командного файла и всех приложений, запущенных из этого командного файла. Windows создает при выполнении пакетного файла копию таблицы переменных окружения для командного интерпретатора. Поэтому изменение PATH, как предложено npocmaka, абсолютно безопасно, так как только локальная копия изменена в PATH, а не системная переменная PATH.

+0

Woo hoo !! Это сделал трюк!: D Это действительно проблема с текущий рабочий каталог отличается от местоположения командного файла и автономной консоли. Большое спасибо! – theitpushover

 Смежные вопросы

  • Нет связанных вопросов^_^