15. september 2013 - 21:45
Der er
9 kommentarer og 1 løsning
Slette fil i mange undermapper der hedder det samme
Hej, jeg er lidt rusten i min kodning, så vil gerne have lidt hjælp da jeg ikke lige kan gennemskue hvordan jeg skal gribe det an. Jeg har en række filer i følgende struktur c:\mappe\john\doku\info.txt c:\mappe\john\info.txt c:\mappe\per\doku\info.txt c:\mappe\per\info.txt etc.... Jeg vil gerne have slettet alle info.txt i undermappen doku, men ikke i mapperne john og per osv. Hvordan gør jeg lige det på en smart måde? jeg har leget lidt med foreach (string stimappe in Directory.EnumerateFiles(@"c:\mappe\", "info.txt", SearchOption.AllDirectories)) i forbindelse med at jeg skulle ændre nogle linier tekst i filen, men der havde jeg linier som kun var i bestemte info.txt filer, så der kunne differentieres let. /PK
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
15. september 2013 - 21:58
#1
Kan du ikke: Finde alle directories under "C:\mappe", dvs "John" og "Per" og derefter søge igennem dem du finder. Dvs: C:\mappe\John\Doku" C:\mappe\Per\Doku" og så slette alle de filer der hedder "info.txt". mvh
15. september 2013 - 22:03
#2
Kan man ikke på en måde lave en wildcard sletning, så jeg sletter alle filer der hedder "*\doku\info.txt" ?
15. september 2013 - 22:08
#3
Jo, men ved ikke om det ville være hurtigere. Du kunne jo søge efter alle filer der hedder "info.txt" og så bagefter teste fil navnet op mod: "\doku\info.txt". Det skal så gøres mod FileInfo's FullName property. Det ville også virke. Ved ikke man kan lave wildcard søgning på et directoty. mvh
15. september 2013 - 22:14
#4
Kan jeg lokke dig til at skrive et par liniers kode eksempel :-) ? Jeg har ingen anelse om hvordan jeg skal gøre.
15. september 2013 - 22:14
#5
Lidt andre navne, men du kan gøre sådan her: var directory = new DirectoryInfo(@"C:\temp"); FileInfo[] fileInfos = directory.GetFiles(@"info.txt", SearchOption.AllDirectories); foreach (var fileInfo in fileInfos) { Console.WriteLine(fileInfo.FullName); if (fileInfo.FullName.EndsWith(@"test\info.txt", StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("Delete this file"); } } Lidt søgning siger at wildcard directoties søgning efter filer ikke kan lade sig gøre. mvh
15. september 2013 - 22:29
#6
Du er genial :-) Det virker perfekt og min nattesøvn er reddet. Takker mange gange. Hvordan giver jeg dig lige point ?
15. september 2013 - 22:31
#7
Nattesøvn :-) Jeg smider et svar du så kan acceptere.
15. september 2013 - 22:36
#8
Istedet for Console.WriteLine("Delete this file"); skal jeg vel skrive File.Delete(); Men hvad skal der stå i parentes'en ? (Og så fik jeg også lært at vælge kommentar istedet for svar)
15. september 2013 - 22:44
#9
fileInfo.Delete() File er kun en statisk klasse og der kan du give hele filnavnet med: File.Delete(fileInfo.FullName) Men så er første option vist nemmere :-)
15. september 2013 - 22:48
#10
Tak for superhurtig og kompetent hjælp :-)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.