Opgelost Alleen de (niet lege) mappen verwijderen met een batch-script maar de bestanden laten staan.

Dit topic is als opgelost gemarkeerd

anton44

Verenigingslid
Lid geworden
20 mei 2005
Berichten
1.729
In een mappenstructuur (zie voorbeeld) wil ik de (3) mappen verwijderen maar de 4 bestanden laten staan.
De mappen en bestanden hebben wisselende namen.
De mappen kunnen ook nog submappen hebben.
De routine rmdir /s /q verwijderd zowel de mappen als bestanden en dat is niet de bedoeling.
Mogelijk moet met een loop de namen van de mappen gezocht worden en daarna deze verwijderen.

Screen-20250215_1455-05.jpg
 
Dat is een contradictio in terminis. Niet lege mappen kun je niet op die manier verwijderen. Normaal met cmd delete/erase je eerst de bestanden en verwijdert dan de map.
Ik begrijp de afbeelding niet. De hoofdmap is Root, de rest submappen? Wat/waar zijn dan die 4 bestanden. Ik zie er maar 1 = 630KB.

Als het alleen om de mappen gaat kun je wellicht jokertekens gebruiken?

Using wildcards with the rmdir or rd command

 
Laatst bewerkt:
Root is de fictieve naam voor de hoofdmap
De mapnamen zijn ook fictief en zijn sterk wisselend van naam
De hoofdmap is fictief gevuld met 3 submappen en een aantal sub0submappen en 4 bestanden met sterk wisselende bestandsnamen.
> rd /s ledigt ook gevulde mappen.
 
Dat is een contradictio in terminis. Niet lege mappen kun je niet op die manier verwijderen. Normaal met cmd delete/erase je eerst de bestanden en verwijdert dan de map.
Ik begrijp de afbeelding niet. De hoofdmap is Root, de rest submappen? Wat/waar zijn dan die 4 bestanden. Ik zie er maar 1 = 630KB.

Als het alleen om de mappen gaat kun je wellicht jokertekens gebruiken?

Using wildcards with the rmdir or rd command

RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
/S Removes all directories and files in the specified directory
in addition to the directory itself. Used to remove a directory
tree.
/Q Quiet mode, do not ask if ok to remove a directory tree with /S
 
Heel mooi. Moest niet kunnen en is gevaarlijk. Je zult je maar vergissen!

Volgens mij staat in die link wel een mogelijke oplossing.
 
Ik wil maar zeggen dat het gebruik van jokertekens in deze niet mogelijk is !
 
The rmdir / rd command alone doesn't support wildcard characters (that is, * and ?). You can workaround this limitation by wrapping it in a for loop.
Zie link.

for /d %%G in ("X:\Root\Map*") do rd /s /q "%%~G"
 
Laatst bewerkt:
Dat klopt. Echter er staat:
Als het alleen om de mappen gaat kun je wellicht = misschien, mogelijk, jokertekens gebruiken?
Ik weet op dat moment dus niet of dit ook werkelijk kan. Maar goed, jij weet toch ook niet alles en bent toch ook aan het uitproberen/testen van wat wel en niet kan en hoe de resultaten zijn?
 
for /d %%G in ("X:\Root\Map*") do rd /s /q "%%~G"
Deze was ik ook ergens tegengekomen maar had de haakjes om de doelmap over het hoofd gezien.
Ook zag ik daar maar enkel % en geen %% waardoor dat script niet werkte.

Bedankt maar weer.
 
If you want to put it into a ".bat" or a ".cmd" file, you need to double the "%" characters.
Is nu wat je wilde gelukt?
 
As het enkel om lege mappen gaat, is volgens mij de enige betrouwbare oplossing een kopie maken met robocopy. Even opzoeken welke optie er is om alles (behalve lege mappen) te kopieren.

Daarna oude versie verwijderen en je nieuw gemaakte versie verplaatsen naar de originele plek.
 
@RogerS, bedankt voor het meedenken.
Na een nachtje slapen heb ik besloten om de inhoud van diverse mappen NIET naar een enkele hoofdmap te verplaatsen. De reden is dat het gevaar dat bij dubbele bestandsnamen in verschillende mappen met verschillende status de jongste versie overschreven wordt door de oudere. Dit is uiteraard niet wenselijk.
- Ik heb wel weer veel geleerd -
Met robocopy maak ik een backup-kopie en laat die structuur intact.
 
Batch files moet je altijd zeer uitgebreid testen en goed kijken wat de resultaten zijn. Lege mappen klakkeloos verwijderen is ook gevaarlijk, immers ze kunnen een heel andere functie hebben binnen een structuur.

Wat ik nu doe, is echt belangrijke mappen en bestanden onder één naam (wel met submappen) bij elkaar zetten/houden. Vervolgens maak ik met Robocy een volledige kopie van de map per maand en dan kan ik altijd terugvallen op die kopie.

Voor de niet privé-folders/bestanden (paar miljoen) maak ik dan 'normale' back-ups.
 
Ik doe dagelijks de belangrijke bestanden die gewijzigd zijn backuppen naar een aparte map op de HD en ook naar dropbox. Eens per 2 weken de backupbestanden kopiëren naar een ext HD. Hierna de dropbox weer opschonen. Hierdoor kan ik ten alle tijden over de meest recente data beschikken ook al crashes de HD van mijn laptop.
Een ander gegeven:
Ik werd min of meer gedwongen om af te stappen van XCopy. De reden daarvan is dat ik enkele grotere bestanden wilde uitsluiten van BU. Deze bestanden hebben een spatie in de naam die Exclude niet herkende. Het wijzigen van die bestandsnamen heeft heel wat consequenties en daarom naar een andere oplossing gezocht. Robocopy herkent deze wel. Het toepassen van robocopy ging niet over een leien dakje ivm het definiëren van de bron- en bestemmings formats. Maar uiteindelijk wel gelukt.
 
Terug
Bovenaan Onderaan