Пакетный скрипт для архивирования всех файлов без родительской папки - PullRequest
7 голосов
/ 14 июля 2011

Я хотел создать командный файл, который может сделать 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

Ответы [ 4 ]

6 голосов
/ 15 июля 2011

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

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

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

1 голос
/ 06 августа 2012

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

SET WINRAR = "C: \ Program Files \ WinRAR"

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

0 голосов
/ 06 июля 2012
@REM ------- BEGIN demo.cmd ----------------
@setlocal
@echo off

set path="C:\Program Files\WinRAR\";%path%

for /F %%i in ('dir /s/b *.rar') do call :do_extract "%%i"
goto :eof

:do_extract
echo %1
mkdir %~1.extracted
pushd %~1.extracted
unrar e %1
popd

REM ------- END demo.cmd ------------------
0 голосов
/ 14 июля 2011

Теперь я перечисляю по вашему требованию. Я создал 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 - команда для zip

a - аргумент

MyFolder для присвоения имени zip.

*.* означает zip все файлы

enter image description here

...