2011-07-14 11 views
6

Chciałem utworzyć plik wsadowy, który może utworzyć plik zip z folderu, który umieściłem w skrypcie. Oto mój skrypt:Skrypt wsadowy do skompresowania wszystkich plików bez folderu nadrzędnego.

@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 ------------------ 

Skrypt powyżej tworzy plik zip o strukturze jak ta,

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

Ale co chcę plik zip, który jest utworzony ma strukturę podobnie do tego, bez folder nadrzędny (MyFolder),

subFolder1 
subFolder2 
file1.txt 
file2.doc 
file3.js 

Może ktoś mi pomóc rozwiązać ten problem?

uwaga: aplikacja używam to WinRar

+0

Wiem, że używasz WinRar, ale zajrzałbym do 7-zip. Interfejs CLI jest całkiem niezły, a zrobiłem podobny skrypt, gdy używałam Windowsa – Blender

+0

Nie jestem pewien tego, ale co z C: \ MyFolder \\ *? – deStrangis

+0

Kompresowanie folderu i kompresja plików wewnętrznych dadzą taki sam wynik –

Odpowiedz

4

zmienić linię winrar.exe inwokacja następująco:

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

Przełącznik -ep1 mówi archiwizatora wykluczyć folder bazowy ze ścieżek. Ale dla C:\MyFolder folder podstawowy to C:\, więc MyFolder będzie nadal dodany do archiwum. Dlatego musisz zmienić ścieżkę do c:\MyFolder\*, dla której podstawowy folder to c:\MyFolder (i zostanie wykluczony).

0

Teraz jestem aukcji jak na swoje wymagania Mam MyFolder utworzonych na pulpicie, który zawiera 5 plików na przykład poniżej jak masz podane

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

teraz zapytanie jest spakować całą zawartość wewnątrz MójFolder to pierwszy krok jest , aby przejść do tej ścieżki folderu, który znajduje się w pulpicie więc najpierw będę zlokalizuj na moim pulpicie.

Uwaga: (moja nazwa użytkownika będzie inny od ciebie nadzieję, że wiesz rzeczy podstawowe PC)

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. 

gdzie

winrar jest komenda zip

a jest argumentem

MyFolder, aby nadać nazwę zamkowi błyskawicznemu.

*.* środki zip wszystkie pliki

enter image description here

+0

Co to jest 'C: \ Documents and Settings \ ishwar \ Desktop \ e-commerce>' ? Poza tym, polecenie 'rar' nie będzie działać na moim CommandPrompt .. – wahyueka31

+0

@Rebel: To jest tylko przykładowa ścieżka.Zamień rar za pomocą rar.exe lub, jak w twoim przykładzie, winrar.exe – Gfy

0
@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 ------------------ 
+1

powinieneś wyjaśnić, co to robi – thecoshman

1

Możesz użyć tego pliku wsadowego do tworzenia rar bez folderu nadrzędnego.

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

% WINRAR% \ WinRAR.exe -ep1 „D: \ archiwum \ Test.rar "" D: \ Projects \ Test "