Volledige versie bekijken : batchfile



rommeke
14 October 2009, 20:07
Beste leden

Ik ben op zoek naar een instructie die ik kan schrijven in een batch file om alle lege directory in een opgegeven map verwijdert

Ik denk hier persoonlijk aan een for lus alhoewel ik niet precies weet wat ik er in zou moeten zetten

gelieve bij een oplossing ook uit te leggen hoe je precies aan de oplossing komt zodat ik er van kan leren

Mvg

Rommeke

Dopey
14 October 2009, 20:35
Effe mee rudimentair mee denken: allereerst moet je code dus controleren of de directories in de opgegeven directorie bestanden bevatten of niet (dus eerst een if-statement). Naargelang de conditie waar is moeten ze worden verwijderd. Ik zou eerder naar een for each-lus gaan denk ik. In VB krijg ik dat wel ineen. Zal me er ook eens mee zoet houden. :good:
Btw, specifieer je zelf een folder om te doorzoeken, of moet het progje zelfstandig op zoek gaan naar lege directories?

rommeke
14 October 2009, 21:18
de bedoeling is dat je zelf een parameter op geeft die dan doorzocht wordt op lege folders ook in submappen en die worden dan verwijderd

bv (naam.bat) (path van de map die doorzocht moet worden)

ultddave
15 October 2009, 13:25
Opzich is het niet zo simpel als het lijkt. Voorbeeld:

Je hebt map "X". En map "X" bevat geen files. Maar wel een andere map "Y".

En map "Y" heeft geen submappen of files.

Het programma gaat dan map "Y" verwijderen. Maar doordat hij "Y" verwijderd is map "X" nu ook leeg. En moet het algoritme die map ook verwijderen.

Dus opzich moet het algoritme recursief werken zodat alle submappen bereikt kunnen worden. Doordat het recursief werkt kan je dus na de recursieve functie aanroep, de code plaatsen die de respectievelijke map nogmaals checked en indien nodig verwijderd.

Zo voorkom je bovenstaande situatie.

Zoiets als een batch file schrijven kan ik niet. :( Maar via Windows Scripting Host moet het lukken. (Via VB = Visual Basic dus zoals Dopey al zei)

Hier staat code dat recursief alle mappen en files uitschrijft. + uitleg.
http://www.winscripter.com/WSH/FileIO/75.aspx

Dus daar kan je je op baseren.

Mvg,
Dave

Dopey
15 October 2009, 13:36
Het grote voordeel aan VB.Net is dat je via je code makkelijk een aantal ingebouwde functies in Windows kan aanroepen (de zogenaamde API's). Ik zou ook eerder kiezen voor een progje ontwikkeld in VB of C#, kan je ook ineens een aantal extraatjes inbouwen.....maar ik ben er dus ook mee bezig, na het weekend zal dat wel ongeveer klaar en getest zijn, en zal ik de exe-file hier op Minatica posten als dat mag :good::)

ultddave
15 October 2009, 14:28
Ok. :D Ik denk dat Rommeke wil leren programmeren als ik dit lees: http://www.minatica.be/showthread.php?t=64770

Dus ik zou buiten de .exe, ook de code geven. Dan kan hij die bekijken en daaruit leren. ;)

Zie ook eerst post in dit topic;


gelieve bij een oplossing ook uit te leggen hoe je precies aan de oplossing komt zodat ik er van kan leren

Mvg,
Dave

PS: Ik denk wel dat je een .exe file mag posten. Wel eerst inpakken in rar bestand, dan kan je hem toevoegen als bijlage in een post normaal gezien.

Dopey
21 October 2009, 09:02
Ok, heb al snel snel iets ineen gestoken.....maar het is bijlange nog niet af, maar ik wil het eerste gedeelte al meegeven:

http://img197.imageshack.us/img197/8809/foldersearch.png

Public Class frmFolderSearch

Private Sub btnSelecteer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelecteer.Click

FolderBrowserDialog1.ShowDialog()
txtPath.Text = FolderBrowserDialog1.SelectedPath

End Sub

Private Sub btnSearchFolder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearchFolder.Click

For Each foundFile As String In My.Computer.FileSystem.GetFiles(FolderBrowserDialo g1.SelectedPath)
ListBox1.Items.Add(foundFile)
Next
Dim objFSO As Object
Dim objFolder As Object
Dim i As Long

objFSO = CreateObject("Scripting.FileSystemObject")
objFolder = objFSO.GetFolder(FolderBrowserDialog1.SelectedPath )
i = objFolder.Size

objFolder = Nothing
objFSO = Nothing
ListBox1.Items.Add(i)
End Sub
End Class

Wat we hier dus al hebben is het volgende:

De knop btnSelecteer spreekt voor zichzelf: het opent een venster waarin je kan browsen door je harde schiijf om een folder te selecteren, het pad van de geselecteerde folder verschijnt in de textbox (waar de eigenschappen zo van zijn ingesteld dat de textbox variabel is in breedte om het volledige pad te kunnen weergeven.
De knop btnSearchfolder geeft daarna op zijn beurt weer welke bestanden er in de map staan, en voegt ze toe aan de listbox, en geeft als laatste weer de omvang van de files in bytes.