Jump to content
DaniW

Mit wsh Script verzeichnisse löschen

Recommended Posts

Hallo 

Ich suche ein Script womit man aus einem Laufwerk alle Verzeichnisse löschen kann ausser Verzeichnisse welche mit _ anfangen.

Gibt's bestimmt schon oder sehr ähnlich. Hab schon verschiedene Sachen versucht. Funzt leider nicht so wie ich das gerne hätte.

 

Vielen Dank

 

 

Share this post


Link to post

Hi,

 

ich würde "wsh" vorne um ein "Po" in der Mitte um "er" und am Ende mit "ell" zu PowerShell ergänzen. ;)

Dann wäre "Get-ChildItem" und "Remove-Item" ein Ansatz.

 

Wichtig wäre nur die Frage, was ist mit Verzeichnissen, die nicht mit "_" anfangen in denen aber Unterverzeichnisse mit "_" am Anfang sind?

 

Gruß

Jan

  • Like 1

Share this post


Link to post

Hi Danke Jan für die Antwort

Ja das wäre eine Variante welche ich noch prüfen werde. Vorläufig möchte es aber mit WSH machen. Es geht nur um das oberste Level. Was danach kommt spielt keine Rolle. Das soll dann einfach weggeputzt werden. 

Gruss Dani

Share this post


Link to post

Ich gehe davon aus, dass du alleine für 

Get-ChildItem | where { -not $_.Name.StartsWith("_") }

etwas mehr an Code in wsh benötigst. Den Part mit "Remove-Item" kriegst du sicherlich alleine "drangedengelt". Um auf Nummer Sicher zu gehen könntest du ans "Remove-Item" noch ein "-WhatIf" anhängen.

  • Thanks 1

Share this post


Link to post

Vielen Dank Jan

Ich hoffe ja noch, dass mir da einer mit wsh weiterhelfen kann.

Folgendes habe ich mal gefunden und weiter zusammengestiefelt. Jetzt muss ich nur noch die Verzeichnisse im Root welche mit _ beginnen nicht löschen. Aber wie?

strRootFolder = "C:\Temp\Leermachen"

Set fso = CreateObject("Scripting.FileSystemObject")
Set objFS = CreateObject("Scripting.FilesystemObject")
Set ofolder = fso.GetFolder(strRootFolder)


 '  Files im Rootverz löschen
fso.DeleteFile "c:\Temp\Leermachen\*.*", true
   

'Durchlaufe alle Unterverzeichnisse
for each folder in ofolder.subfolders
 KillFolderSub folder
next


Sub KillfolderSub(objFolder)

 'Durchlaufe alle Unterverzeichnisse
 for each subfolder in objfolder.subfolders
   KillFolderSub subfolder
 next

 
   'Alle Dateien im Ordner löschen
   for each file in objfolder.Files
     fso.DeleteFile(file.Path)
   next

   'Ordner löschen
   fso.DeleteFolder(objFolder.Path)
 
     
  
  
End Sub

msgbox "feddich" 

 

Share this post


Link to post

Moin,

 

warum erzeugst du dir zwei FSO-Objekte? Falls du im WSH-Scripting nicht firm bist, ist das Löschen von Daten vielleicht nicht der beste Einstieg ...

 

Wir werden dir hier kein Skript schreiben, aber wenn du uns mal sagst, was denn das eigentliche Ziel ist, können wir dir vielleicht besser den Weg weisen.

 

Gruß, Nils

 

Share this post


Link to post
vor 2 Stunden schrieb DaniW:

Vorläufig möchte es aber mit WSH machen.

Ich bin neugierig - warum soll es denn unbedingt WSH sein, wenn ich fragen darf?

Share this post


Link to post

Hi Nils

Learning by doing würde ich mal sagen.

Ich erwarte auch nicht, dass mir hier ein Script geschrieben wird. Sonst hätte ich gewartet bis hier was reinschneit.

 

Ziel:

"Jetzt muss ich nur noch die Verzeichnisse im Root welche mit _ beginnen stehen lassen (nicht löschen). Aber wie? "

Bsp:

 

c:\temp\Leermachen\_Test1 (stehen lassen)

c:\temp\Leermachen\_Test2 (stehen lassen)

c:\temp\Leermachen\Test (löschen)

c:\temp\Leermachen\Test99 (löschen)

 

Evtl. ist ja case ein Ansatz?

 

Gruss Dani

Share this post


Link to post

Moin,

 

mit "Ziel" meine ich nicht, dass du deine Frage einfach wiederholst. Ich kann im Browser scrollen.

 

Was steckt dahinter? Warum soll gelöscht werden, warum sollen bestimmte Verzeichnisse stehen bleiben? Dein Beispielcode löscht auch Dateien, ist das Teil der Aufgabe?

 

Vielleicht (bzw. wahrscheinlich) gibt es andere Wege, das Ziel zu erreichen. Dafür aber muss man das Ziel kennen.

 

Gruß, Nils

 

Share this post


Link to post

Nils wenn du im Browser scrollen kannst dann musst du es einfach nur noch lesen. Aber trotzdem Danke für deine Bereitschaft.

 

Jan hats verstanden vielen Dank dafür.

Falls es jemand anders einfach mit PS machen möchte dann geht das auch so.

 

Get-ChildItem -Path C:\temp\leermachen -Exclude "_*" | Remove-Item

Share this post


Link to post

Sagst Du uns vielleicht trotzdem noch, warum es unbedingt WSH sein soll? Ich würde es gern verstehen.

  • Like 1

Share this post


Link to post
vor 2 Stunden schrieb DaniW:

Nils wenn du im Browser scrollen kannst dann musst du es einfach nur noch lesen. Aber trotzdem Danke für deine Bereitschaft.

Werter Dani, wir sind hier einen freundlichen und wertschätzenden Umgang miteinander gewohnt. Daher bitte ich dich darum zukünftig auf solche nicht zielführende (durchaus als unverschämt wahrzunehmende) Kommentare zu verzichten.

 

Ich an deiner Stelle würde immer im Hinterkopf behalten, dass ich derjenige bin der Hilfe sucht und dabei gut überlegen ob es zielführend ist, denjenigen die mir helten können ans Bein zu pinkeln...

 

Vielen dank für dein Verständnis.

Share this post


Link to post

Lieber Dr. Melzer

 

Als unverschämt?? Naja das hinkt dann doch etwas :). Auch ich schätze einen freundlichen und wertschätzenden Umgang.

Ich habe durchaus Verständnis dafür, dass man nicht jedes Anliegen versteht oder gar bearbeiten möchte. Muss man ja auch nicht ich zahle ja auch nicht dafür also habe ich auch keinen Qualitätsanspruch. 

 

Aber da du schon fragst, wenn ich eine Aufgabe 3 mal möglichst einfach beschreibe. Tut mir leid mein Fehler aber einfacher kann ich es nicht aufmahlen.

 

Dann geht es nicht darum, was ich warum löschen möchte, sondern einfach dass ich was löschen möchte. und zwar am liebsten mit wsh. Man kann mich gerne auch auf andere Tools hinweisen. Kein Problem das hat Jan gemacht und hat sogar noch Codeschnipsel geliefert. War zwar nicht die Frage aber trotzdem vielen Dank dafür. 

Mir stattdessen gesagt wird, dass hier keiner für mich code erzeugt,  (ok, hab ich gar nicht erwartet) hab ja noch was gepostet) 

oder wenn ich nicht firm mit wsh bin es lieber sein lassen soll. (ok, wenn ich firm damit wäre hätte ich wohl kaum diese Frage gestellt?)

Dann frage ich mich schon was soll das? Das ist das schlicht für niemanden zielführend. Gut war ein Hinweis nehme ich gerne so zur Kenntnis.

 

Erwartet hätte ich ein Codeschnipsel mach es doch mit case oder so ähnlich --> fertig 

 

Für mich ist die Sache erledigt. 

 

 

 

 

 

 

Share this post


Link to post

Jetzt werde ich aber doch unsicher. Siehst Du eigentlich meine Beiträge, oder werden die irgendwie geblockt?

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...