IF EXIST als Kommando in Buttonbar

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
Xnor
Junior Member
Junior Member
Posts: 80
Joined: 2009-04-17, 10:55 UTC

IF EXIST als Kommando in Buttonbar

Post by *Xnor »

ich würde gern den folgenden befehl in die Buttonbar bzw. als ein eigenen Befehl in der usercmd.ini realisieren/definieren.

Code: Select all

IF EXIST c:\ cd c:\

muss man da mit %comspec% arbeiten ?

hab dazu schon bisschen gesucht, doch nicht genau verstanden wie es Funktioniert bzw. wozu es genau gut ist.

MfG
#201591 Single user licence
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hallo, Xnor.
muss man da mit %comspec% arbeiten ?
Ja, klar. if , exist und cd sind interne Anweisungen der cmd.exe, also des Kommandozeileninterpreters.
Und in der Variablen %COMSPEC% wird nichts anderes festgehalten als der voll qualifizierte Dateiname des aktuellen des Kommandozeileninterpreters.

Um interne Befehle des Kommandozeileninterpreters ausführen zu können, muß dieser geladen sein. Da das ab Windows NT vorgabemäßig cmd.exe ist, muß dieser gestartet werden.

Kurz und knapp, der Befehl muß lauten
%COMSPEC% /k if exist C:\ cd C:\
wozu es genau gut ist.
Das frage ich mich bei dem Befehl auch so ein bißchen. Was er tut ist folgendes:
+ lädt den Kommandointerpreter
+ dieser prüft ob C:\ existiert.
+ wenn ja wechselt er dorthin.
+ wenn nein dann bleibt er im (nicht ganz so zufällig) aktuellen Verzeichnis stehen.
+ Der Kommandointerpreter wartet nun so lange auf Befehle, bis einer EXIT lautet oder das Fenster geschlossen wird.

Mehr zu cmd.exe und Kommandozeilenbefehlen unter Windows XP gibt es hier: Command-line reference A-Z . Verfügbar auch im Hilfesystem deines Windows auf der lokalen Platte. :wink:

Innerhalb des T.C. kannst du dir die Sache aber viel einfacher machen: einen Button belegen mit dem Befehl cd C:\. Oder dasselbe in die Verzeichnisliste (Strg+d) eintragen. 8) Auf das "If exist" mußt du dabei dann aber verzichten.

Grüße,
Karl
User avatar
Xnor
Junior Member
Junior Member
Posts: 80
Joined: 2009-04-17, 10:55 UTC

Post by *Xnor »

Hey Karl

danke für die Erklärung

die Frage, wozu es gut sei, bezog sich nur auf %comspecs%
karlchen wrote:Innerhalb des T.C. kannst du dir die Sache aber viel einfacher machen: einen Button belegen mit dem Befehl cd C:\. Oder dasselbe in die Verzeichnisliste (Strg+d) eintragen. 8) Auf das "If exist" mußt du dabei dann aber verzichten.
das dies möglich ist, wusste ich

der Befehl mit if exist (und cd) ist von mir so gewollt, da ich Laufwerksbuchstaben definieren will, die nicht immer vorhaden sind, und das manchmal lästige Fenster umgehen wollte, wegen Laufwerk nicht vorhaden.

eine letzte Frage hätte ich hier noch.
so hab ich in anderen Topic %comspec% mit dem Parameter /c gesehn. Welche Aufgabe bzw. was bedeuten diese Parameter für mich und gibt es weitere?
edit: die Frage hat sich wohl mit dieser Seite (http://www.geocities.com/rick_lively/MANUALS/COMMANDS/C/CMD.HTM) erledigt

MfG

edit: huh? irgendwie will der Befehl nicht, wie ich es will :)

so im endeffekt ist mein Problem jetzt, dass er das zwar richtig das Verzeichnis im "cmd-Fenster" anzeigt, also ändert, aber nicht auf den TC anwendet
#201591 Single user licence
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hallo, Xnor.
so im endeffekt ist mein Problem jetzt, dass er das zwar richtig das Verzeichnis im "cmd-Fenster" anzeigt, also ändert, aber nicht auf den TC anwendet
Damit sind wir bei dem letzten Teil meiner vorherigen Antwort angelangt:
Innerhalb des T.C. kannst du dir die Sache aber viel einfacher machen: einen Button belegen mit dem Befehl cd C:\. Oder dasselbe in die Verzeichnisliste (Strg+d) eintragen. 8) Auf das "If exist" mußt du dabei dann aber verzichten.
Das wirkt sich dann auf die aktuelle Dateiliste im T.C. aus.

Grüße,
Karl
User avatar
Xnor
Junior Member
Junior Member
Posts: 80
Joined: 2009-04-17, 10:55 UTC

Post by *Xnor »

Hey Karl

hmm stimmt irgendwie,

wenn ich jetzt darüber nachdenke, ist es nur logisch, dass es nicht funktioniert :D

man müsste sonst durch die cmd.exe den Total Commander sagen, das er das Verzeichnis ändern soll, was ja eher nicht möglich ist.

wird dann wohl mit

Code: Select all

cd c:\
geregelt.

naja, danke für deine Geduld.

MfG
#201591 Single user licence
User avatar
Xnor
Junior Member
Junior Member
Posts: 80
Joined: 2009-04-17, 10:55 UTC

Post by *Xnor »

hab mein Anliegen sogar noch mit hilfe von AutoHotkey so hingekriegt, wie ich es mir vorgestellt hab

http://www.ghisler.ch/wiki/index.php?title=AutoHotkey:_Send_a_command_to_Total_Commander

Code: Select all

%COMSPEC% /c if exist C:\ SendTCCommand.exe cm_gotoDriveC
#201591 Single user licence
Post Reply