webForumDet fria alternativet

unzippa med bat-fil

Windows

10 svar · 979 visningar · startad av Insider

Medlem sedan jan. 2000978 inlägg
Frågan#1

Jag försöker skapa en bat-fil som tar alla .zip filer i en viss katalog och packar upp varje zip-fil till en ny katalog som heter samma sak som zip-filen.

Såhär långt har jag kommit. Problemet är att det skapas en hel katalogstruktur i unzip-katalogen. Går det att plocka ut själva filnamnet ur variabeln %%f ?? (som verkar innehålla hela sökvägen)

for %%f in (D:\test\*.zip) do C:\Program\WinZip\WINZIP32.EXE -e %%f D:\test\unzip\%%f\
Medlem sedan juli 200412 913 inlägg
#2

hmm... vet inte riktigt hur det där funkar, men rent allmänt så i en batchfil om du har en variabel t ex %1 så om du stoppar in ett filnamn så hamnar det i variabeln, t ex:

skriv
@echo %1
och spara som t ex test.bat

om du sedan provar med

test variabel

så kommer variabeln att skrivas ut på skärmen.

Jag tror att din variabel helt enkelt blir fel och frågan är istället vad som händer innan din for-sats där?! ...hur kommer hela sökvägen till då?

Medlem sedan jan. 2000978 inlägg
#3

Sökvägen är statisk. Min kodrad utgör hela filen.
Variabeln %%f verkar innehålla hela filnamnet inklusive sökväg. Filerna packas upp till test\unzip\. men inte i test\unzip\filnamn, utan i test\unzip\d_\hela_sökvägen_\filnamn.zip

Jag vill plocka ut filnamnet ur %%f.

Medlem sedan juli 200412 913 inlägg
#4

om du lägger till växeln "j" på winzip-kommandot då:
"winzip32 -e -j %%f" alltså. Fast då kanske alla sökvägar förstörs...

Medlem sedan juni 20008 205 inlägg
#5

Insider skrev:

Går det att plocka ut själva filnamnet ur variabeln %%f ?? (som verkar innehålla hela sökvägen)

CD:a till katalogen innan du gör nåt:

cd D:\test\
for %%f in (*.zip) do C:\Program\WinZip\WINZIP32.EXE -e %%f unzip\%%f\

Då varken vill eller behöver katalognamnet finnas med i expansionen av *. Vill du sluta i samma katalog som du började kan du använda pushdir/popdir.

Medlem sedan jan. 2000978 inlägg
#6

Funkade fint! tack.

Medlem sedan jan. 2000978 inlägg
#7

Nu kom nästa problem.
Jag vill kunna komprimera alla mappar i en viss katalog:

for %%f in (D:\zippa\) do C:\Program\WinZip\WINZIP32.EXE -a -r %%f.zip %%f

Winzip klagar på att den inte hittar några filer. Sen hamnar alla filer i alla underkataloger i en zip-fil.

Jag vill att varje mapp i katalogen zippa ska komprimeras till en egen zip.
Det verkar inte som att for-slingan kan loopa genom en uppsättning med kataloger. Bara filer...

Medlem sedan jan. 2000978 inlägg
#8

Snubblade över lösningen. :r

cd D:\zippa\
FOR [b]/D[/b] %%G in (*.*) DO C:\Program\WinZip\WINZIP32.EXE -a -r %%G.zip %%G
Medlem sedan sep. 200610 inlägg
#9

Commandline Support!

Varför inte installer WinZip Command Line Support Add-On...
Då har du ju alla funktioner...
Finns att ladda ner på Winzip

Medlem sedan juli 200412 913 inlägg
#10

Varför inte installera WinRAR, RAR för DOS följer då med automatisk. Använder WinRAR för att zippa med själv :) Men ok, kör du bara zip så är det väl klart det är onödigt kanske.

Medlem sedan juni 20014 421 inlägg
#11

för att kommandoradshackning ger så mycket mer tillbaka till livet!

258 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)