Oto moja struktura katalogów (w Windows 8.1):
parentdir\
child1\
child2\
grandchild1\
grandchild2\
grandchild3\
...
child3\
child4\
...
Używając 7-Zip w wierszu poleceń, próbuję zautomatyzować skrypt kompresji, aby zarchiwizować całą zawartość parentdir
pliku parentdir.zip.
W wynikowym archiwum muszę wykluczyć całą zawartość child2
oprócz grandchild1
.
Mógłbym wybrać:
7z a -r parentdir.zip parentdir\* -xr!child2\grandchild2 -xr!child2\grandchild3, etc.
Problem w tym, że może być dowolna liczba wnuków!
Znowu bawiłem się z czymś takim jak:
7z a -r parentdir.zip parentdir\* -xr!child2\* -ir!child2\grandchild1\*
Polecenie działało ładnie, całkowicie ignorując mój drugi przełącznik (włącz).
Czy mogę używać przełączników włączania i wyłączania na tej samej linii? Jeśli tak to jak? A jeśli nie, jak mogę osiągnąć cel, który właśnie opisałem powyżej, w moim drzewie katalogów?
Dziękuję Ci.
-x
i-i
przełączniki są ze sobą sprzeczne, więc możesz to zrobić7z a -r parentdir.zip -ir!parentdir\child2\grandchild1\
od swojego rodzicaparentdir
. Jeśli twoja struktura katalogów zmienia się co jakiś czas, więc będziesz musiał często zmieniać skrypt, możesz to zrobić za pomocą wynikówfor
polecenia. Zacznij odfor /F "tokens=*" %G in ('dir /ad /s /B parentdir') do @echo %G
pierwszego spojrzenia.