Пакетный скрипт для архивирования всех файлов без родительской папки

Я хотел создать пакетный файл, который может сделать zip-файл из папки, которую я поместил в скрипт. Вот мой сценарий:

@REM ------- BEGIN xpi.bat ----------------
@setlocal
@echo off
set path="C:\Program Files\WinRAR\";%path%

winrar.exe a -afzip -m5 -ed -pTest -r c:\test.zip c:\MyFolder

REM ------- END xpi.bat ------------------

Приведенный выше скрипт создает zip-файл с такой структурой:

MyFolder
--subFolder1
--subFolder2
--file1.txt
--file2.doc
--file3.js

Но то, что я хочу, чтобы сформированный zip-файл имел структуру, подобную этой, без родительской папки (MyFolder),

subFolder1
subFolder2
file1.txt
file2.doc
file3.js

Может ли кто-нибудь помочь мне исправить это?

примечание:я использую приложение WinRar


person wahyueka31    schedule 14.07.2011    source источник
comment
Я знаю, что вы используете WinRar, но я бы посмотрел на 7-zip. Интерфейс командной строки довольно приятный, и я сделал с ним аналогичный скрипт, когда использовал Windows.   -  person Blender    schedule 14.07.2011
comment
Не уверен в этом, но как насчет C:\MyFolder\* ?   -  person deStrangis    schedule 14.07.2011
comment
Сжатие папки и сжатие внутренних файлов даст тот же результат   -  person Vishwanath Dalvi    schedule 14.07.2011


Ответы (4)


Измените строку вызова winrar.exe следующим образом:

winrar.exe a -afzip -m5 -ed -pTest -r -ep1 c:\test.zip c:\MyFolder\*

Переключатель -ep1 указывает архиватору исключить базовую папку из путей. Но для C:\MyFolder базовая папка C:\, поэтому MyFolder все равно будет добавлено в архив. Поэтому вам нужно изменить путь на c:\MyFolder\*, для которого базовая папка c:\MyFolder (и она будет исключена).

person Andriy M    schedule 15.07.2011
comment
На самом деле * в конце не нужен. Просто завершите путь символом \ или /. - person omerfarukdogan; 01.10.2019

Вы можете использовать этот пакетный файл для создания rar без родительской папки.

УСТАНОВИТЬ ВИНРАР = "C:\Program Files\WinRAR"

%WINRAR%\WinRAR.exe a -ep1 "D:\Archive\Test.rar" "D:\Projects\Test"

person nim007    schedule 06.08.2012

Теперь я перечисляю в соответствии с вашим требованием. Я создал MyFolder на своем рабочем столе, который содержит 5 файлов, например, ниже, как вы дали

MyFolder
--subFolder1
--subFolder2
--file1.txt
--file2.doc
--file3.js

Теперь вы запрашиваете заархивирование всего содержимого в MyFolder, тогда первым шагом будет переход к пути к той папке, которая находится на рабочем столе, поэтому сначала я найду свой рабочий стол.

Примечание. (Мое имя пользователя будет отличаться от вашего, надеюсь, вы знакомы с основными функциями Windows)

1.C:\Documents and Settings\ishwar\Desktop\MyFolder>set path="c:\ProgramFiles  
  \WinRAR";%path%

  -- Set the path (note if you are doing using commands from cmd prompt you need to
  do this every time when you open cmd newly if you are creating batch file then OK)

2. C:\Documents and Settings\ishwar>cd Desktop

3. C:\Documents and Settings\ishwar\Desktop>cd MyFolder 

-- change directory to the folder in which all the files are stored.

4. C:\Documents and Settings\ishwar\Desktop\MyFolder>winrar a MyFolder *.*

-- this command will zip all the contents and will create MyFolder.rar file within
   MyFolder.

5. You are done.

куда,

winrar - это команда для архивирования

a является аргументом

MyFolder чтобы дать имя zip.

*.* означает заархивировать все файлы

введите здесь описание изображения

person Vishwanath Dalvi    schedule 14.07.2011
comment
Что означает C:\Documents and Settings\ishwar\Desktop\e-commerce>?? Кроме того, команда rar не будет работать в моей командной строке. - person wahyueka31; 15.07.2011
comment
@Rebel: это всего лишь пример пути. Замените rar на rar.exe или, как в вашем примере, на winrar.exe. - person Gfy; 15.07.2011

person    schedule
comment
вы должны объяснить, что это делает - person thecoshman; 11.10.2012