Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[batch+7-zip]multi-zips met punten,spaties en submappen

Pagina: 1
Acties:

  • M0nkeymen
  • Registratie: Maart 2009
  • Laatst online: 23-11 12:03

M0nkeymen

Monkeystyle!

Topicstarter
Ik weet niet of dit het juiste forum is maar hier stonden de meeste batch gerelateerde dingen in. Ik probeer een batch file te maken die alle DWG's zipt op de plek waar ze staan, dus in submappen.

Dit is het nu:
C:\Users\Beneden\Desktop\ziptest\Hoofdmap\submap 1\teke.ning2.dwg
C:\Users\Beneden\Desktop\ziptest\Hoofdmap\submap 1\tek.ening1.dwg
C:\Users\Beneden\Desktop\ziptest\Hoofdmap\submap 2\tekening3.dwg
C:\Users\Beneden\Desktop\ziptest\Hoofdmap\submap 2\te.kening4.dwg

Dit moet het worden:
C:\Users\Beneden\Desktop\ziptest\Hoofdmap\submap 1\teke.ning2.zip
C:\Users\Beneden\Desktop\ziptest\Hoofdmap\submap 1\tek.ening1.zip
C:\Users\Beneden\Desktop\ziptest\Hoofdmap\submap 2\tekening3.zip
C:\Users\Beneden\Desktop\ziptest\Hoofdmap\submap 2\te.kening4.zip

nu kom ik met deze code een heel eind:
code:
1
2
3
dir *.dwg /OE /S /B >C:\Users\Beneden\Desktop\ziptest\test.txt
FOR /F "tokens=1,2 delims=." %%I in (C:\Users\Beneden\Desktop\ziptest\test.txt) do "C:\Program Files\7-Zip\7z.exe" a -tzip "%%I.%%J.zip" "%%I.%%J.dwg"
pause


maar nu doet hij het natuurlijk niet, omdat er ook tekeningen zijn zonder punten... Mijn vraag is eigenlijk "Hoe los je zoiets het beste op?" en "zijn er verbeter punten aan te brengen in mijn code?" wat als er spaties in mijn documentnaam zitten?

psn: M0nkeymen81 | Inglourious Guardians


  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 22:43
Waarschijnlijk nog niet helemaal perfect, maar misschien kom je hier weer wat verder mee:


code:
1
FOR /F "tokens=*" %%A IN ('DIR C:\Users\Beneden\Desktop\ziptest\*.dwg /S /B') DO "C:\Program Files\7-Zip\7z.exe" a "%%~dpnA.zip" "%%A"

  • M0nkeymen
  • Registratie: Maart 2009
  • Laatst online: 23-11 12:03

M0nkeymen

Monkeystyle!

Topicstarter
Nielson schreef op zaterdag 09 juli 2011 @ 10:40:
Waarschijnlijk nog niet helemaal perfect, maar misschien kom je hier weer wat verder mee:

code:
1
FOR /F "tokens=*" %%A IN ('DIR C:\Users\Beneden\Desktop\ziptest\*.dwg /S /B') DO "C:\Program Files\7-Zip\7z.exe" a "%%~dpnA.zip" "%%A"
Als ik het goed begrijp:
"tokens=*" haalt de spatie's eruit?
%%~dpnA.zip plakt drive-letter, pad en bestandsnaam aan elkaar zonder extentie.
('DIR C:\Users\Beneden\Desktop\ziptest\*.dwg /S /B') filter het lijstje met dwg's

Klopt dit? Hmm perfect, thx!

psn: M0nkeymen81 | Inglourious Guardians


  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 22:43
"tokens=*" haalt de spatie's eruit?
Zo ongeveer. Als je delims niet definieert staat deze standaard op spatie en tab, waardoor een path/bestandsnaam met spaties dus opgedeeld wordt in verschillende tokens. Met tokens=* worden deze allemaal weer toegekend aan de eerste variabele.
%%~dpnA.zip plakt drive-letter, pad en bestandsnaam aan elkaar zonder extentie.
('DIR C:\Users\Beneden\Desktop\ziptest\*.dwg /S /B') filter het lijstje met dwg's. Klopt dit?
Jup. 't Zal vast ook wel anders kunnen (meestal wordt hier bij dit soort vragen meteen verwezen naar vbscript of powershell), maar 't gaat om het resultaat toch?

  • M0nkeymen
  • Registratie: Maart 2009
  • Laatst online: 23-11 12:03

M0nkeymen

Monkeystyle!

Topicstarter
Ok duidelijk, bedankt! :*)

psn: M0nkeymen81 | Inglourious Guardians