Verzeichniswechsel in DOS-Shell

  • Hallo,

    ich habe ein Problem in meinem Programm agkp. Wenn ich unter Win98 in der DOS-Shell ein Verzeichnis wechseln will, habe ich 2 Möglichkeiten:

    cd c:\verzeichnis\unterverzeichnis
    cd c:\verzeichnis\unterverzeichnis\

    Bei mir gehen beide Möglichkeiten. Bei manü, der sich agkp geladen hat, funktioniert's aber nicht. Daher vermute ich, daß bei neueren Betriebssystemen (z.B. WinXP) nur eine der beiden obigen Möglichkeiten funktioniert.

    Kann das bitte mal jemand probieren?

    Danke!

    akapuma

    Wer weiß, wovon er redet, kann es sich leisten, sich verständlich auszudrücken.
    Besucht auch meine Homepage: http://akapuma.info

  • Zitat von LigH

    Hat das Zielverzeichnis Leerzeichen?

    Nein, die Gänsefüßchen könnt ich aber prophylaktisch dazutun.

    Zitat von LigH

    Außerdem ist ein Laufwerkswechsel während des Verzeichniswechsels wahrscheinlich auch nicht möglich:

    Das isses nicht. Laufwerk wird vorher gewechselt.

    Bleibt noch die Frage mit dem letzten "\".

    Gruß

    akapuma

    Wer weiß, wovon er redet, kann es sich leisten, sich verständlich auszudrücken.
    Besucht auch meine Homepage: http://akapuma.info

  • Zitat von LigH

    Hat das Zielverzeichnis Leerzeichen? Dann bitte mit Anführungszeichen:

    cd "C:\Eigene Dateien" bzw. cd "C:\Dokumente und Einstellungen"


    Das ist nicht unbedingt notwendig:

    Zitat von PC Welt

    Ein wichtiger Unterschied zwischen dem DOS-Prompt in Windows 95 und dem NT-Prompt ist, daß Sie in NT Verzeichnisse mit Leerstellen im Namen nicht in Anführungsstriche setzen müssen. Bei der Eingabe des Befehls cd eigene dateien mahnt der Win-95-Prompt an, daß zu viele Parameter vorhanden seien, NT wechselt dagegen anstandslos in das Verzeichnis "Eigene Dateien". Außerdem können Sie unter NT sogar die Platzhalter "*" und "?" beim Verzeichniswechsel verwenden.

    @ akapuma: An einem Beispiel kann man Fehler besser erkennen.

  • Zitat von LigH

    "Immer mit" ist dann zumindest sicherer.

    Es ging doch nur darum, ob es funktioniert. Unter Win9xME wird die COMMAND.EXE benutzt, welche jeweils die selbe Syntax anwendet, auch wenn der Befehlsumfang mit den Versionen stieg. Bei WinNT/2K/XP wird die CMD.EXE benutzt, welche einen anderen Befehlsumfang besitzt, wobei ein großer Teil mit der COMMAND.EXE übereinstimmen sollte.

    Dass Akapuma vermutet, dass Manü WinXP benutzt, wusste ich noch nicht, als ich meinen Beitrag schrieb. Du hattest als Beispiel

    Zitat von LigH

    cd "C:\Dokumente und Einstellungen"

    ins Spiel gebracht, was es wohl nur bei den NT-Systemen gibt. Und darauf bezog sich mein Beitrag.

    Die " sind selbstverständlich sicherer, aber bei CMD nicht zwingend. Was allerdings nicht bedeutet, dass ein anderer Parser die Befehlzeile richtig auflöst.

  • Hallo,

    das ganze ist höchst merkwürdig. In der zweiten Zeile steht der komplette Pfad. Da sind weder Leerzeichen noch Sonderzeichen drin. Mein Programm trennt das "lastjob.vcf" hinten ab und versucht, das Verzeichnis zu wechseln. Daß das nicht geht, sieht man an der dritten Zeile, es ist noch ein Rest von "Ungültiges Verzeichnis" zu erkennen.

    Bei mir geht's aber einwandfrei, bei manü nicht.

    Gruß

    akapuma

  • Zitat von akapuma

    Mein Programm trennt das "lastjob.vcf" hinten ab und versucht, das Verzeichnis zu wechseln. Daß das nicht geht, sieht man an der dritten Zeile, es ist noch ein Rest von "Ungültiges Verzeichnis" zu erkennen.

    In der dritten Zeile steht auch das "lastjob.vcf". Lass doch mal den Verzeichnisnamen ausgeben, in welchen gewechselt werden soll. Vielleicht wird die Variable falsch beschnitten!?

  • Zitat von akapuma

    cd c:\verzeichnis\unterverzeichnis
    cd c:\verzeichnis\unterverzeichnis\

    Hab WinXP Pro:
    Wenn Ihr mal die Autovervollständigung ausprobiert (TAB) dann ergänzt die Konsole das auf erste die Option (ohne Backslash am Ende) und wenn der Pfad ein Leerzeichen enthält werden die Gänsefüßchen automatisch hinzugefügt.

    "C:\Pfad mit Leerzeichen" scheint mir also am konformsten.

  • Zitat von Garf

    Vielleicht wird die Variable falsch beschnitten!?

    Das hab ich mal simuliert, es wird richtig beschnitten. Würde bei manü, aus welchem Grund auch immer, falsch beschnitten, dann wäre auch das "lastjob.vcf" in der letzten Zeile nicht richtig.

    Zitat von matthiasb

    "C:\Pfad mit Leerzeichen" scheint mir also am konformsten.

    Ich hab ein "\" hinten. Werd mal ein kleines Testprogramm hierzu schreiben, daß alle Möglichkeiten ausprobiert.

    Gruß

    akapuma

    EDIT:
    Hallo

    Es gibt 3 mal 2 Möglichkeiten:

    - mit oder ohne \ hinten
    - mit oder ohne " vorn und hinten
    - lange Namen "testverzeichnis" oder kurze "testve~1"

    Ich habe mal ein kleines Testprogramm geschrieben, daß alle 8 Möglichkeiten ausprobiert. Es werden 8 Blöcke mit je 2 Zeilen ausgegeben:
    1 Zeile = Parameter
    2 Zeile = aktuelles Verzeichnis
    Bei Win98 gehen alle 8 Möglichkeiten. Könnt Ihr das mal bitte testen. Dazu muß erst folgendes Verzeichnis erstellt werden:

    C:\testordner1\testordner2

    Dann einfach das hier anhängende Programm starten und gucken, ob auch 8 mal gewechselt wird.

    Bin mal gespannt. Bei Antworten bitte auch die Windowsversion angeben.

    Danke.

    akapuma

  • Zitat von LigH

    Und bisher vermutet akapuma ja nur, dass manü XP hätte.


    Hm, manü hat Win2000 mit SP4. Wäre also toll, wenn jemand mit diesem Betriebssystem das Programm aus meinem Post hiervor ausprobieren könnte. XP könnte zusätzlich hierzu aber auch interessant sein.

    Danke.

    Gruß

    akapuma

    Wer weiß, wovon er redet, kann es sich leisten, sich verständlich auszudrücken.
    Besucht auch meine Homepage: http://akapuma.info

  • W2KSP4 hab ich auch:

  • WindowsXP Pro SP1

    Prozessorauslastung 100% (?)

  • Erstmal, danke für's probieren.

    Au wei, da funktioniert ja nur eine einzige Möglichkeit:heul:

    Mein Programm ist ein DOS-Programm und kann daher keine langen Dateinamen. Deshalb habe ich versucht, den Verzeichniswechsel über eine Dos-Shell durchzuführen das scheint aber leider nicht zu klappen.

    Leider kann man lange Dateinamen nicht so ohne weiteres in kurze umwandeln. Daher werd ich mal probieren, daß agkp eine BAT-Datei schreibt und diese aufruft, falls niemand eine andere Idee hat.

    Gruß

    akapuma

    Wer weiß, wovon er redet, kann es sich leisten, sich verständlich auszudrücken.
    Besucht auch meine Homepage: http://akapuma.info

  • WindowsXP Pro SP1

  • akapuma:

    Es ist schon ein erhheblicher Unterschied, ob man ein DOS-Programm schreibt (das zur Not auch noch unter MS-DOS 3.3 laufen würde - aber eben keine Ahnung von langen Dateinamen hat), oder ein Windows-Konsolenprogramm (das lange Dateinamen versteht, dann aber mindestens Windows 95 voraussetzt).

    Würde mich nicht wundern, wenn DOS-Programme nicht in der CMD.EXE gestartet werden, sondern zwischendurch kurzzeitig in einer COMMAND.COM - die gibt's durchaus auch noch unter Windows NT(+)!

    Was für eine Programmiersprache nutzt du? Hat die keinen internen ChangeDir-Befehl, muss die dafür eine Shell bemühen?

  • Ich habe es mal unter WinXP Home SP1 ausprobiert:

    Code
    c:\testordner1\testordner2C:\c:\testordner1\testordner2\C:\c:\testor~1\testo~1C:\testor~1\testo~1c:\testor~1\testor~1\sC:\"c:\testordner1\testordner2"t - "c:\testordner1\testordner2"C:\"c:\testordner1\testordner2\" - "c:\testordner1\testordner2\"C:\"c:\testor~1\testor~1"korrekt - "c:\testor~1\testor~1"C:\"c:\testor~1\testor~1\"orrekt - "c:\testor~1\testor~1\"C:\

    Wenn ich im CMD.EXE Fenster von C: aus cd c:\testordner1\testordner2 bzw cd testordner1\testordner2 ausführe, funktioniert es. Das bedeutet wohl, dass es nicht am DOS-Befehl bzw den Variablen liegt sondern an dem Befehl, mit welchem Du den DOS-Befehl übergibts.

    Nachtrag:

    Code
    C:\>CDTEST.EXE
    Ung?ltiges Verzeichnis
    Ung?ltiges Verzeichnis
    Ung?ltiges Verzeichnis
    Parameterformat nicht korrekt -  "c:\testordner1\testordner2"
    Parameterformat nicht korrekt -  "c:\testordner1\testordner2\"
    Parameterformat nicht korrekt -  "c:\testor~1\testor~1"
    Parameterformat nicht korrekt -  "c:\testor~1\testor~1\"

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!