PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verzeichniswechsel in DOS-Shell


akapuma
17. June 2005, 23:09
Hallo,

ich habe ein Problem in meinem Programm agkp (http://forum.gleitz.info/showthread.php?t=22860). 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

LigH
17. June 2005, 23:17
Hat das Zielverzeichnis Leerzeichen? Dann bitte mit Anführungszeichen:

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

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

D:
cd \TEMP

akapuma
17. June 2005, 23:27
Hat das Zielverzeichnis Leerzeichen?Nein, die Gänsefüßchen könnt ich aber prophylaktisch dazutun.

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

LigH
17. June 2005, 23:47
Unter Windows 2000 ist das egal, klappt beides.

Garf
17. June 2005, 23:51
Hat das Zielverzeichnis Leerzeichen? Dann bitte mit Anführungszeichen:

cd "C:\Eigene Dateien" bzw. cd "C:\Dokumente und Einstellungen"
Das ist nicht unbedingt notwendig:
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.

Gorbag
18. June 2005, 08:24
Bei mir gehen beide Möglichkeiten. Getestet unter Win XP home in der Eingabeaufforderung.

LigH
18. June 2005, 09:06
@ Garf:

Na und? "Immer mit" ist dann zumindest sicherer. Und bisher vermutet akapuma ja nur, dass manü XP hätte.

Garf
18. June 2005, 09:34
"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
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.

akapuma
18. June 2005, 09:39
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

Garf
18. June 2005, 18:13
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!?

matthiasb
18. June 2005, 18:29
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.

akapuma
18. June 2005, 19:08
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.

"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

akapuma
19. June 2005, 00:04
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

LigH
19. June 2005, 00:30
W2KSP4 hab ich auch:

c:\testordner1\testordner2
C:\

c:\testordner1\testordner2\
C:\

c:\testor~1\testor~1
C:\TESTOR~1\TESTOR~1

c:\testor~1\testor~1\s
C:\

"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:\

matthiasb
19. June 2005, 08:55
WindowsXP Pro SP1
c:\testordner1\testordner2
C:\

c:\testordner1\testordner2\
C:\

c:\testor~1\testor~1
C:\TESTOR~1\TESTOR~1

c:\testor~1\testor~1\s
C:\

"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:\Prozessorauslastung 100% (?)

akapuma
19. June 2005, 09:03
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

akapuma
19. June 2005, 09:19
Gesagt, getan. Die anhängende Datei macht den Verzeichniswechsel jetzt über eine Batch-Datei. Dürfte ich um einen erneuten Test bitten? Bei Win98 gehen wieder alle Möglichkeiten.

Danke

akapuma

matthiasb
19. June 2005, 09:23
WindowsXP Pro SP1c:\testordner1\testordner2
C:\

c:\testordner1\testordner2\
C:\

c:\testor~1\testor~1
C:\TESTOR~1\TESTOR~1

c:\testor~1\testor~1\s
C:\

"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:\

LigH
19. June 2005, 10:32
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?

Garf
19. June 2005, 11:01
Ich habe es mal unter WinXP Home SP1 ausprobiert:

c:\testordner1\testordner2
C:\

c:\testordner1\testordner2\
C:\

c:\testor~1\testo~1
C:\testor~1\testo~1

c:\testor~1\testor~1\s
C:\

"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:

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\"

zisoft
19. June 2005, 11:43
Außerdem ist ein Laufwerkswechsel während des Verzeichniswechsels wahrscheinlich auch nicht möglich:

D:
cd \TEMP

Doch, das geht. Mit dem Parameter /D

CD [/D] [Laufwerk:][Pfad]


Verwenden Sie die /D-Option, um zusätzlich zum Wechseln des Verzeichnisses
auch das aktuelle Laufwerk zu wechseln.


Ob das allerdings auch unter den alten Betriebssystemen funktioniert, weiß ich nicht. Löst auch nicht das hier geschilderte Problem.

Um möglichst weit abwärtskompatibell zu sein, sollte der Weg über die verkürzten Datei-/Verzeichnisnamen (mit Tilde und auf 8 Zeichen begrenzt) gewählt werden.

Ansonsten kann ich nur die Frage von LigH wiederholen: Welche Programmiersprache?

Garf
19. June 2005, 11:59
Ob das allerdings auch unter den alten Betriebssystemen funktioniert, weiß ich nicht.
Win98SE:
Ungültige Option - /D

akapuma
19. June 2005, 17:27
Hallo,

meine Programmiersprache:
PowerBasic für DOS 3.5. Eine eingeschränkte Demo einer älteren Version gibt's hier (http://www.powerbasic.com/products/pbdos/).

Was für eine Programmiersprache nutzt du? Hat die keinen internen ChangeDir-Befehl, muss die dafür eine Shell bemühen?PowerBasic hat einen chdir-Befehl, der funktioniert allerdings nur mit kurzen Verzeichnisnamen. Nur deshalb bemühe ich die Shell

Umwandlung Verzeichnisnamen
Das geht nicht so einfach. ich weiß z.B. nicht, ob "c:\programme\..." "c:\progra~1\..." oder "c:\progra~2\..." heißt.

zum Laufwerkswechsel
Es findet kein Verzeichniswechsel in der dos-shell statt. Hier gibt's also kein Problem.

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(+)!Aha! Wo ist der Unterschied? Meines Wissens nach benutzt PowerBasic für seine shell den Kommandointerpreter, der in der Umgebungsvariable comspec steht.

Gruß

akapuma

Edit:
Aha! Wo ist der Unterschied?Antwort! (http://www.computerhope.com/issues/ch000395.htm)
Der Kommandointerpreter cmd.exe beherrschte lange Dateinamen, der Kommandointerpreter command.com nicht.

akapuma
19. June 2005, 18:48
So, jetzt probiere ich mal folgendes:

- auslesen der Umgebungsvariable comspec, z.B. c:\windows\command.com
- anstatt command.com wird nun im gleichen Verzeichnis eine cmd.exe gesucht, also z.B. c:\windows\cmd.exe
- existiert diese cmd.exe, wird diese für den shell-Aufruf benutzt. Wenn nicht, dann nicht

Dürfte ich die Windows 2000/XP-Nutzer um einen erneuten Test bitten?

Danke

akapuma

zisoft
19. June 2005, 18:55
Ergebnis Windows 2000:

c:\testordner1\testordner2
C:\

c:\testordner1\testordner2\
C:\

c:\testor~1\testor~1
C:\

c:\testor~1\testor~1\
C:\

"c:\testordner1\testordner2"
C:\

"c:\testordner1\testordner2\"
C:\

"c:\testor~1\testor~1"
C:\

"c:\testor~1\testor~1\"
C:\

Bist Du wirklich auf dieses prähistorische Zeug angewiesen? Langsam sollte man sich doch wohl von Kompatibilität zu MS-DOS verabschieden können.

akapuma
19. June 2005, 20:16
Bist Du wirklich auf dieses prähistorische Zeug angewiesen?Ja, den ich bin selbst nicht mehr der Jüngste und damit selbst prähistorisch. Bisher hat das DOS-Zeugs auch immer für ein paar kleine Hilfsprogramme ausgereicht, und so tief möchte ich auch nicht (mehr) da einsteigen.

Im Prinzip ist das Problem ja schon ganz gut eingekreist. Da werd ich wohl nächste Woche meine Mittagspausen am PC von unserer Sekretärin verbringen, die hat nämlich W2000.

Gruß

akapuma

Garf
19. June 2005, 21:24
Dürfte ich die Windows 2000/XP-Nutzer um einen erneuten Test bitten?

Da wäre dann dies:
alter Kommandointerpreter:
E:\WINDOWS\SYSTEM32\COMMAND.COM

Suche E:\WINDOWS\SYSTEM\CMD.EXE

E:\WINDOWS\SYSTEM32\CMD.EXE ist da, verwende nun den

Bitte Taste drücken...Danach kommt dann das, was Zisoft gepostet hat.

Ja, den ich bin selbst nicht mehr der Jüngste und damit selbst prähistorisch. Bisher hat das DOS-Zeugs auch immer für ein paar kleine Hilfsprogramme ausgereicht, und so tief möchte ich auch nicht (mehr) da einsteigen.Könntest ja zum Beispiel eine Delphi Personal nehmen. In der c't war gerade die Delphi 2005 Personal drin. Von der bin ich aber nicht so angetan, die Delphi 7 Personal gefällt mir besser. Die konnte man beim polnischen Borland vor kurzen noch auf Englisch bekommen oder bei der c't das Heft mit der deutschen Version nachbestellen.

LigH
19. June 2005, 21:38
Wie wäre es denn, Dateien mit dem kompletten Verzeichnis- und Dateinamen zu öffnen, anstatt wirklich das Verzeichnis zu wechseln?

Wird natürlich die Einschränkungen des DOS-Programmes nicht wirklich beheben, das Problem mit unbekannten Kurznamen-Nummern hast du ja schon selber entdeckt.

Ich bin mir noch nicht ganz im Klaren darüber, was dein Programm tatsächlich tut; es verändert Texte in der EXE-Datei, richtig? -- Theoretisch sollte GordianKnot sogar schon Skript-Templates unterstützen, auch wenn deren Bedienung irgendwie zu unübersichtlich und komplex geraten ist.

akapuma
19. June 2005, 22:13
Wie wäre es denn, Dateien mit dem kompletten Verzeichnis- und Dateinamen zu öffnen, anstatt wirklich das Verzeichnis zu wechseln?Das geht auch nicht. Da der aktuelle Pfad nicht immer der ist, in der die Datei steht, müßte ich mit dem kompletten Pfad öffnen. Der darf aber keine langen Namen enthalten. Daher möchte ich erst per commandshell in das entsprechende Verzeichnis wechseln und dann ohne Pfadangabe öffnen.

Ich bin mir noch nicht ganz im Klaren darüber, was dein Programm tatsächlich tut; es verändert Texte in der EXE-Datei, richtig?Nein, es verändert das avs-Skript. Das steht irgendwo beim Film oder beim compcheck im GKnot-Verzeichnis, daher muß ich früher oder später auf jeden Fall das Verzeichnis wechseln.

Gruß

akapuma

LigH
19. June 2005, 22:21
Ich meinte nicht, den aktuellen Pfad abzufragen, sondern auf Dateien mit komplettem Namen zuzugreifen. Also anstatt

ChDir("Pfad1")
OpenFile("Datei1")
...
ChDir("Pfad2")
OpenFile("Datei2")

vielleicht direkt

OpenFile("Pfad1\Datei1")
...
OpenFile("Pfad2\Datei2")

Garf
20. June 2005, 11:36
Nein, es verändert das avs-Skript. Das steht irgendwo beim Film oder beim compcheck im GKnot-Verzeichnis, daher muß ich früher oder später auf jeden Fall das Verzeichnis wechseln.Kannst Du nicht ohne Verzeichniswechsel auf das Script zugreifen?

matthiasb
20. June 2005, 13:19
Dürfte ich die Windows 2000/XP-Nutzer um einen erneuten Test bitten?Wenns nicht schon zu spät ist:
WindowsXP Pro SP1:

c:\testordner1\testordner2
C:\

c:\testordner1\testordner2\
C:\

c:\testor~1\testor~1
C:\

c:\testor~1\testor~1\
C:\

"c:\testordner1\testordner2"
C:\

"c:\testordner1\testordner2\"
C:\

"c:\testor~1\testor~1"
C:\

"c:\testor~1\testor~1\"
C:\

akapuma
20. June 2005, 19:37
Ich meinte nicht, den aktuellen Pfad abzufragen, sondern auf Dateien mit komplettem Namen zuzugreifen.....

vielleicht direkt

OpenFile("Pfad1\Datei1")Nein, das geht leider nicht. "Pfad1" bekomme ich per Parameter direkt von GKnot im Long-Format, und das kann ich auch nicht zum Öffnen der Datei nehmen.

Kannst Du nicht ohne Verzeichniswechsel auf das Script zugreifen?Siehe oben. Ich hatte die Hoffnung, das Verzeichnis in einer Shell wechseln zu können. Ohne Verzeichniswechsel müßte ich den vollen Pfad in 8.3-Schreibweise angeben.

Ich habe heute mal etwas an einem W2000-PC probiert:
- Erzeugt mein Programm eine DOS-Shell mit command.com, muß ich 8.3-Namen verwenden. Die hab ich aber nicht.
- Erzeugt mein Programm eine DOS-Shell mit cmd.exe, kann ich auch lange Namen verwenden. Dann kann ich problemlos mit langen Namen das Verzeichnis wechseln. Wenn ich die Shell aber dann beende, ist wieder das alte Verzeichnis "da". Das war das Problem beim letzten Test.

Es gibt also nur eine Lösung: ich muß lange in kurze Namen umwandeln. Vielleicht findet google was.

Gruß

akapuma

LigH
20. June 2005, 19:43
Von MS-DOS-Programmen aus ist es schwer, auf die Windows-Funktionen zuzugreifen, die kurze Dateinamen aus langen Dateinamen zurückgeben. Insbesondere, weil es zwei gibt: Eine Funktionengruppe für Windows 9x/ME, und eine Funktionengruppe für Windows 2K/XP.

Hättest du einen Windows-Compiler, hättest du das Problem nicht. Mit einem DOS-Compiler kannst du es nahezu vergessen...

akapuma
21. June 2005, 09:20
Hallo,

könnte bitte jemand der Tester das anhängede Programm testen? Es muß weiterhin der Ordner "c:\testordner1\testordner2" existieren.

Google hat nämlich ergeben, daß der "attrib"-Befehl zum Umrechnen von long=>short benutzt werden kann.

Gruß

akapuma

LigH
21. June 2005, 09:33
Bei mir steht da nur noch:
C:\testordner1\testordner2

akapuma
25. June 2005, 10:28
Hallo,

auf der Herstellerseite meines Dos-Compilers www.powerbasic.com gibt's eine Library, mit der einige Befehle mit long-filename-support zur Verfügung stehen. Wie immer geht's bei WIN98. Kann das bitte nochmal jemand testen? Es muß weiterhin das Verzeichnis "c:\testordner1\testordner2" existieren. Ich hoffe, ich werde nicht lästig.

Danke

akapuma

matthiasb
25. June 2005, 10:41
Ich hoffe, ich werde nicht lästig.keineswegs

Windows XP Pro SP1:
c:\testordner1\testordner2
C:\TESTOR~1\TESTOR~1

c:\testordner1\testordner2\
C:\TESTOR~1\TESTOR~1\

c:\testor~1\testor~1
C:\TESTOR~1\TESTOR~1

c:\testor~1\testor~1\
C:\TESTOR~1\TESTOR~1\

"c:\testordner1\testordner2"
C:\

"c:\testordner1\testordner2\"
C:\

"c:\testor~1\testor~1"
C:\

"c:\testor~1\testor~1\"
C:\

nexustheoriginal
25. June 2005, 10:48
Außerdem ist ein Laufwerkswechsel während des Verzeichniswechsels wahrscheinlich auch nicht möglich:
Also:
c:\>cd D:\Ordner
hat zur Folge dass auf LW D: in das Verzeichnis Ordner gewechselt wird, die Konsole bleibt aber auf C:.


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)Ähm, nein. Wenn in dem Verzeichnis ein weiteres Verzeichnis ist, wird das angehängt, Beispiel:

Es exisitiert: C:\Ordner\NochEinOrdner
C:\>cd Ordner\
Ein Druck auf Tab bringt:
C:\>cd Ordner\NochEinOrdner

Wenn ich allerdings
C:\>cd Ordner\NochEinOrdner\
eingebe und Tab drücke passiert gar nichts.

matthiasb
25. June 2005, 10:59
@nexus
Bei eingabe vonC:\>testound einem anschließenen Druck auf TAB kommtC:\>testordner1Deswegen auch Vervollstädigung.

katjarella
25. June 2005, 10:59
Ich verwende imm er den /D Schalter noch.

ab W2K: Wechselt das Verzeichnis oder zeigt dessen Namen an.

CHDIR [/D] [Laufwerk:][Pfad]
CHDIR [..]
CD [/D] [Laufwerk:][Pfad]
CD [..]

.. Gibt an, dass Sie in das übergeordnete Verzeichnis wechseln möchten.

Geben Sie "CD Laufwerk:" ein, um das aktuelle Verzeichnis auf dem angegebenen Laufwerk anzuzeigen. Mit CD ohne Parameter wird das aktuelle Laufwerk und Verzeichnis angezeigt.
Verwenden Sie die /D-Option, um zusätzlich zum Wechseln des Verzeichnisses auch das aktuelle Laufwerk zu wechseln.
Wenn die Befehlserweiterungen aktiviert sind, wird CHDIR folgendermaßen
verändert:

Der angegebene Verzeichnisname wird so konvertiert, dass dieser bezüglich
Groß- und Kleinschreibung dem Namen auf dem Laufwerk entspricht. So wird durch CD C:\TEMP der aktuelle Pfad auf das Verzeichnis C:\Temp festgelegt, wenn ein Verzeichnis mit diesem Namen auf dem Laufwerk existiert.

Der CHDIR-Befehl behandelt Leerzeichen nicht als Begrenzungszeichen, so dass es möglich ist, in ein Unterverzeichnis zu wechseln, dessen Name Leerzeichen enthält, ohne diese mit Anführungszeichen einzuschließen. Beispiel:

cd Eigene Dateien

ist dasselbe wie:

cd "Eigene Dateien"

Wenn die Befehlserweiterungen nicht aktiviert sind, müssen die Anführungs-
zeichen angegeben werden.

nexustheoriginal
25. June 2005, 11:03
@nexus
Bei eingabe vonC:\>testound einem anschließenen Druck auf TAB kommtC:\>testordner1Deswegen auch Vervollstädigung.Sag ich doch. Reden wir gerade aneinander vorbei? :huh: Du hattest geschrieben: Wenn Ihr mal die Autovervollständigung ausprobiert (TAB) dann ergänzt die Konsole das auf erste die Option (ohne Backslash am Ende) und das ist nicht der Fall.

matthiasb
25. June 2005, 11:10
Aaaah, jetzt geht mir ein Licht auf :ratlos:

mit dem
Wenn Ihr mal die Autovervollständigung ausprobiert (TAB) dann ergänzt die Konsole das auf erste die Option (ohne Backslash am Ende)hab ich das natürlich ohne Unterverzeichnisse gemeint.

Hab ichs endlich begriffen?

akapuma
25. June 2005, 11:13
Hallo,

über den Kommandointerpreter geht's aber aus meinem Programm nicht, denn
- command.com kann keine langen Namen
- cmd.exe geht zwar, allerdings bleibt z.B. der Verzeichniswechsel nach Beenden der Shell nicht erhalten. Mit der neuen Library stehen mir aber neue Befehle zur Verfügung:
PowerBasic PBLfn32

ATTRIB LfnGetAttrib% (the function)
ATTRIB LfnSetAttrib% (the command)
CHDIR LfnChDir
CURDIR$ LfnCurDir$
DIR$ LfnDirFirst$ (the first call, with arguments)
LfnDirNext$ {next calls, without arguments)
FILES LfnFiles
KILL LfnKill
MKDIR LfnMkDir
NAME LfnName (for both file names)
RMDIR LfnRmDir
In der neuen Testdatei hatte ich LfnChDir verwendet, und der Test von matthiasb war zum Glück erfolgreich. Wenn jemand unter Win2000 zu dem gleichen Ergebis käme, wäre das klasse!

Sollte der unwahrscheinliche Fall auftreten, daß jemand mit PB/DOS das gleiche machen will, die librarys pblfn322 und pblfnupd gibt's gratis hier (http://www.powerbasic.com/files/pub/pbdos/library/).

Gruß

akapuma

nexustheoriginal
25. June 2005, 11:16
Aaaah, jetzt geht mir ein Licht auf :ratlos:

mit dem
hab ich das natürlich ohne Unterverzeichnisse gemeint.

Hab ichs endlich begriffen?Naja, die Hälfte. :)
Wenn ich dich richtig verstehe, behauptest du dass TAB das "\" am Ende wegmacht, wenn keine Untverzeichnisse existieren. Bei mir nicht, da passiert einfach gar nichts, das "\" am Ende bleibt.

matthiasb
25. June 2005, 11:20
Wenn ich dich richtig verstehe, behauptest du dass TAB das "\" am Ende wegmacht...Hab ich mich leider falsch ausgedrückt: Ich meinte nicht
das \ am Ende wegmachen, sondern
das \ am Ende nicht hinzufügen

und das tritt doch ein?
(geh jetzt offline tschüß)

nexustheoriginal
25. June 2005, 11:28
Jetzt hast du's geschafft mich zu verwirren. :D

Also bei mir mach TAB in beide Fällen nichts.

C:\>cd Ordner\NochEinOrdner
bleibt so bei Druck auf TAB

C:\>cd Ordner\NochEinOrdner\
auch.

Tschüss und noch nen schönen Tag. :)

matthiasb
25. June 2005, 15:45
Jetzt hast du's geschafft mich zu verwirren.Keine Sorge, ich meinte doch das Selbe.

LigH
25. June 2005, 19:56
Mein Ergebnis auf W2KSP4:
c:\testordner1\testordner2
C:\TESTOR~1\TESTOR~1

c:\testordner1\testordner2\
C:\TESTOR~1\TESTOR~1\

c:\testor~1\testor~1
C:\TESTOR~1\TESTOR~1

c:\testor~1\testor~1\
C:\TESTOR~1\TESTOR~1\

"c:\testordner1\testordner2"
C:\

"c:\testordner1\testordner2\"
C:\

"c:\testor~1\testor~1"
C:\

"c:\testor~1\testor~1\"
C:\

akapuma
25. June 2005, 20:28
Mein Ergebnis auf W2KSP4:
Danke, dann klappt's ja jetzt auf WinXP (matthiasb), Win2000(LigH) und Win98(bei mir). Die neuen Erkenntnisse hab ich in agkp (http://forum.gleitz.info/showthread.php?t=22860&page=1&pp=10) einfließen lassen. Danke allen für die Mithilfe.

Gruß

akapuma