У меня есть пакетный файл, который запускается на наших выделенных серверах каждый день и сжимает файлы.
Вот фрагмент пакетного файла:
%SUBDIR%7z a -tzip %fullname% %datapath%\*.txt >>%LOGFILE%
%SUBDIR%7z a -tzip %fullname% %datapath%\spoolq.q >>%LOGFILE%
%SUBDIR%7z a -tzip %fullname% %datapath%\vblib\shared\settings.cfg >>%LOGFILE%
%SUBDIR%7z a -tzip %fullname% %datapath%\sssusers.d >>%LOGFILE%
%SUBDIR%7z a -tzip %fullname% %datapath%\#library\*prt.cfg >>%LOGFILE%
%SUBDIR%7z a -tzip %fullname% %datapath%\#library\printer.txt >>%LOGFILE%
%SUBDIR%7z a -tzip %fullname% %datapath%\#library\netuse.text >>%LOGFILE%
%SUBDIR%7z a -tzip %fullname% %datapath%\*.cfg >>%LOGFILE%
Пакетный файл получает нужные мне файлы, но все они находятся в одном каталоге, а не в своих исходных каталогах.
Я попробовал 7z x filename.zip
извлечь файлы, но это не дало никаких других результатов.
Нужно ли указывать переключатель при сжатии?
Спасибо за помощь!
редактировать
Я только что понял, что говорю 7z поместить этот файл в архив, как есть. Теперь я это понимаю, поэтому мой вопрос на самом деле в том, есть ли способ сохранить исходную структуру папок при сжатии файлов?
решение1
Это довольно слабо, но вам придется использовать относительные пути без диска или с обратным слешем в начале.
В вашем примере %datapath%
нужно иметь "users\johnny\filespec"
вместо "c:\users\filespec"
.
Cd \
7z a –tzip myzip.zip users\johnny\tmp\tmp2\TMP2.TXT
Сохранит структуру папок.
Затем из той же папки, в которую вы его заархивировали, вы можете распаковать его с помощью ...
7z x myzip.zip
и 7z вернет его обратно со структурой папок.
Будьте осторожны, распаковывать архив нужно из той же папки, которую вы заархивировали, поскольку папки будут созданы в вашем текущем местоположении.