Avatar billede mcgoat Nybegynder
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 :)
Avatar billede the_party_dog Nybegynder
10. juli 2006 - 10:03 #1
Husker du at sætte dit argument i "" tegn?

cmd.exe "Hej Med Dig.txt"
Avatar billede mcgoat Nybegynder
10. juli 2006 - 10:13 #2
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
Avatar billede mcgoat Nybegynder
10. juli 2006 - 10:15 #3
parsed[] bliver til arg[] nede i "del" funktionen :)
Avatar billede hmortensen Nybegynder
10. juli 2006 - 10:17 #4
Så kan du vel lave noget ala:
hvis parser[0] er del
  så er fil parser[1] til parser[x]
Avatar billede the_party_dog Nybegynder
10. juli 2006 - 10:17 #5
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....
Avatar billede mcgoat Nybegynder
10. juli 2006 - 10:23 #6
hmm... fik en ide ud af det... køre parsed[] igennem indtil jeg har fået en .* extension. Prøver det lige :)
Avatar billede hmortensen Nybegynder
10. juli 2006 - 10:46 #7
Husk at "a . b . c.txt" er et gyldigt filnavn.
Avatar billede mcgoat Nybegynder
10. juli 2006 - 10:57 #8
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 :)
Avatar billede the_party_dog Nybegynder
10. juli 2006 - 11:09 #9
Done....
Avatar billede hmortensen Nybegynder
10. juli 2006 - 11:11 #10
Svar.
Avatar billede mcgoat Nybegynder
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 :)
Avatar billede mcgoat Nybegynder
10. juli 2006 - 11:16 #12
mente selvfølgelig

ren en eller anden fil.txt en eller anden fil2.txt
Avatar billede hmortensen Nybegynder
10. juli 2006 - 11:57 #13
Så skal der "" om filnavnet, lige som i dos, ellers er det umuligt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester