10. juli 2006 - 10:00
Der er
11 kommentarer og 2 løsninger
kan ikke "finde" filer/mapper med spaces i navn
Har lavet en masse funktioner til at kopiere/slette/rename filer og mapper. Men lige så snart jeg f.eks har en fil der hedder "hej med dig.txt" så vil den bare læse "hej", og så sige filen ikke eksisterer. Nogen der har en smart nem måde at løse det på? f.eks case "del": bool delfileexist = System.IO.File.Exists(currentdir + arg[1]); if (delfileexist) { try { System.IO.File.Delete(currentdir + arg[1]); Console.WriteLine("File deleted"); } catch (Exception e) { Console.WriteLine(e.Message.ToString()); } } else { Console.WriteLine("Couldn't find file: {0}", currentdir + arg[1]); } Console.WriteLine(); break;//"del" Hvis jeg har en fil der hedder "hej med dig.txt", så vil den bare prøve at finde en fil der hedder "hej" og sige filen ikke eksisterer. Men det er vel fordi det kommer ud sådan her arg[1] = hej, 2 = med, 3 = dig.txt .. hmmm.... hjælp :)
Annonceindlæg tema
Husker du at sætte dit argument i "" tegn? cmd.exe "Hej Med Dig.txt"
har jeg prøvet. så tror den filen hedder "hej Men nu er det godt nok ikke et argument til programmet, men til en function.. while (command != "exit" && command != "quit") { Thread.Sleep(100); // Had to add this to avoid "while" being faster than the ping to write, still does some crazy-shit tho Console.Write( currentdir.ToUpper() ); command = Console.ReadLine(); if ( command.Contains(" ") ) { parsed = command.Split(' '); command = parsed[0]; currentdir = sendcommand1(parsed[0], parsed, currentdir); } else { parsed[0] = command; parsed[1] = "0"; currentdir = sendcommand1(command, parsed, currentdir); } } Så det må vel næsten være fordi jeg splitter mine kommandoer op.. hmm... Når jeg skriver: del test1.txt så er parsed[0] = del og parsed[1] = test1.txt... men hvis jeg nu skriver: del hej med dig.txt så er parsed[0] = del, parsed[1] = hej, parsed[2] = med, parsed[3] = dig.txt og hvis jeg laver det i "" så vil det bare ændre at parsed[1] bliver = "hej, og parsed[3] bliver = dig.txt" Ved ikke lige hvordan jeg skal få den til at tage filnavne osv som 1 argument og ikke flere
parsed[] bliver til arg[] nede i "del" funktionen :)
Så kan du vel lave noget ala: hvis parser[0] er del så er fil parser[1] til parser[x]
Du kan jo bruge andet end " ", kan du ikke bruge ";" til at dele filerne i din command? Ellers lav et hack med at at du teste på om hver array har et . tilstede, ellers skal du ligge dem sammen til et langt fil navn....
hmm... fik en ide ud af det... køre parsed[] igennem indtil jeg har fået en .* extension. Prøver det lige :)
Husk at "a . b . c.txt" er et gyldigt filnavn.
Bixede lige dette sammen og så funker det sq bare :) static String LongToShort(string[] args) { String ShortName = ""; for (int i = 1; i < args.Length; i++) { ShortName += " " + args[i]; } return ShortName.Substring(1,ShortName.Length-1); } Tak for hjælpen. Smid nogle svar :)
10. juli 2006 - 11:11
#10
Svar.
10. juli 2006 - 11:15
#11
hmm.. tænkte lige på.. Det er jo fint nok når man kun skal bruge 1 parameter, altså til del en eller anden fil.txt md en mappe rd en mappe men jeg får da store problemmer med: ren en eller anden fil.txt en eller anden fil.txt hmm... må jeg liiige tænke lidt over :)
10. juli 2006 - 11:16
#12
mente selvfølgelig ren en eller anden fil.txt en eller anden fil2.txt
10. juli 2006 - 11:57
#13
Så skal der "" om filnavnet, lige som i dos, ellers er det umuligt.
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.