Kommando zum Verzeichniswechsel
Moderators: Hacker, Stefan2, white
Kommando zum Verzeichniswechsel
Hallo,
ich habe folgende Situation:
ich arbeite mit Arbeitsdateien aus denen ich pdf generiere. Beide Dateien liegen im selben Stammverzeichnis, aber in verschiedenen Ordnern, also Beispielsweise die Arbeitsdatei in:
Stammverzeichnis/Arbeitsverzeichnis/Projekt/Unterprojekt/Datei.xyz und das Pdf Verzeichniss unter:
Stammverzeichnis/PDFVerzeichnis/Projekt/Unterprojekt/Datei.pdf
Diese Struktur ist immer gleich, alles was sich ändert ist die Verzeichnistiefe unterhalb Arbeitsverzeichnis/PDFVerzeichnis
Wenn ich jetzt zwischen beiden Pfaden wechseln möchte, hab ich, je nach Verzeichnistiefe eine endlose Klickerei und suche deshalb nach einem Tool/Kommando, mit dem ich folgendes erreichen kann:
-ermittle mir den Verzeichnispfad der Arbeitsdatei
-ersetze in diesem Pfad den Teil "Arbeitsverzeichnis" durch "PDFVerzeichniss"
-öffne mir diesen Ordner
Geht sowas, oder kennt jemand vielleicht ein Tool, welches sowas kann?
Grüße, chapolote
ich habe folgende Situation:
ich arbeite mit Arbeitsdateien aus denen ich pdf generiere. Beide Dateien liegen im selben Stammverzeichnis, aber in verschiedenen Ordnern, also Beispielsweise die Arbeitsdatei in:
Stammverzeichnis/Arbeitsverzeichnis/Projekt/Unterprojekt/Datei.xyz und das Pdf Verzeichniss unter:
Stammverzeichnis/PDFVerzeichnis/Projekt/Unterprojekt/Datei.pdf
Diese Struktur ist immer gleich, alles was sich ändert ist die Verzeichnistiefe unterhalb Arbeitsverzeichnis/PDFVerzeichnis
Wenn ich jetzt zwischen beiden Pfaden wechseln möchte, hab ich, je nach Verzeichnistiefe eine endlose Klickerei und suche deshalb nach einem Tool/Kommando, mit dem ich folgendes erreichen kann:
-ermittle mir den Verzeichnispfad der Arbeitsdatei
-ersetze in diesem Pfad den Teil "Arbeitsverzeichnis" durch "PDFVerzeichniss"
-öffne mir diesen Ordner
Geht sowas, oder kennt jemand vielleicht ein Tool, welches sowas kann?
Grüße, chapolote
- ghisler(Author)
- Site Admin
- Posts: 50390
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Re: Kommando zum Verzeichniswechsel
Das geht mit einem Button, Startmenüeintrag oder internem Befehl:
Befehl: cd
Parameter: Stammverzeichnis/PDFVerzeichnis\%P:~xy,1000
wobei xy ersetzt werden muss durch die Länge des Arbeitsverzeichnispfades.
Wenn Sie an den Anfang von Parameter ein ? stellen, zeigt TC den erzeugten Zielpfad an.
Befehl: cd
Parameter: Stammverzeichnis/PDFVerzeichnis\%P:~xy,1000
wobei xy ersetzt werden muss durch die Länge des Arbeitsverzeichnispfades.
Wenn Sie an den Anfang von Parameter ein ? stellen, zeigt TC den erzeugten Zielpfad an.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Re: Kommando zum Verzeichniswechsel
Vielleicht ein wenig universeller und ohne das Abzählen der Verzeichnislänge:
Befehl: cd
Parameter:
Code: Select all
%B+0:\%B+1\%B+2\%B+3\PDFVerzeichnis\%B+5\%B+6\%B+7\%B+8\%B+9
Die Verzeichnistiefe darf bis zu neun Ebenen haben, nicht vorhandene werden ignoriert.
Dies kann man natürlich noch mit anderen Kommandozeilenparametern des TCs kombinieren, zB öffnen als neuer Tab im Zielfenster:
Befehl:
Code: Select all
%COMMANDER_EXE%
Code: Select all
/O /S /T /R=%B+0:\%B+1\%B+2\%B+3\PDFVerzeichnis\%B+5\%B+6\%B+7\%B+8\%B+9
Re: Kommando zum Verzeichniswechsel
Wow, das ist ja schon mal super. Ist einfacher, als ich dachte. Danke.
Zumindest was die Lösung von ZoSTeR betrifft. Mit der Lösung von ghisler komm ich leider nicht zurück, da erhalte ich dann Pfade wie Stammverzeichniss/PDFVerzeichnis\Unterverzeichnis. Das Unterverzeichnis existiert zwar im PDFVerzeichnis, aber wird nicht geöffnet.
Aber: ich hab in der Beschreibung einen Fehler gemacht, was das Ganze mit dem bisherigen Ansatz in meinem Fall nicht universel macht. Das lag daran, daß in meinem Kopf die Idee war, ich gehe vom Arbeitsverzeichniss zurück ins Stammverzeichnis und von da wieder runter ins PDFVerzeichnis, während der Lösungsvorschlag von ZoSTeR auf dem kompletten Pfad basiert.
Anders gesagt, die Verzeichnistiefe zum Arbeitsverzeichnis/PDFVerzeichniss ab Laufwerksebene ist unterschiedlich, ich müsste aber, falls es dafür eine ähnliche Vorgehensweise gäbe, mit dem Limit von 9 Ebenen im Normalfall hinkommen.
Eigentlich müsste es so sein, daß der komplette Pfad von Arbeitsverzeichniss benutzt wird, darin, ich sags mal salopp, nach Arbeitsverzeichniss gesucht wird und das ersetzt durch PDFVerzeichnis wird.
Sorry, daß ich die Problematik nicht richtig beschrieben habe...
Zumindest was die Lösung von ZoSTeR betrifft. Mit der Lösung von ghisler komm ich leider nicht zurück, da erhalte ich dann Pfade wie Stammverzeichniss/PDFVerzeichnis\Unterverzeichnis. Das Unterverzeichnis existiert zwar im PDFVerzeichnis, aber wird nicht geöffnet.
Aber: ich hab in der Beschreibung einen Fehler gemacht, was das Ganze mit dem bisherigen Ansatz in meinem Fall nicht universel macht. Das lag daran, daß in meinem Kopf die Idee war, ich gehe vom Arbeitsverzeichniss zurück ins Stammverzeichnis und von da wieder runter ins PDFVerzeichnis, während der Lösungsvorschlag von ZoSTeR auf dem kompletten Pfad basiert.
Anders gesagt, die Verzeichnistiefe zum Arbeitsverzeichnis/PDFVerzeichniss ab Laufwerksebene ist unterschiedlich, ich müsste aber, falls es dafür eine ähnliche Vorgehensweise gäbe, mit dem Limit von 9 Ebenen im Normalfall hinkommen.
Eigentlich müsste es so sein, daß der komplette Pfad von Arbeitsverzeichniss benutzt wird, darin, ich sags mal salopp, nach Arbeitsverzeichniss gesucht wird und das ersetzt durch PDFVerzeichnis wird.
Sorry, daß ich die Problematik nicht richtig beschrieben habe...
Re: Kommando zum Verzeichniswechsel
Dann muss man wohl doch auf Batch zurückgreifen.
Folgendes als "TC_CD_ArbeitPDF.cmd" oder ähnlich speichern:
Code: Select all
@echo off
set _Arbeitsverzeichnis=Mein Arbeitsverzeichnis
set _PDFverzeichnis=Mein PDF-Verzeichnis
set _quelle=%1
call set _ziel=%%_quelle:%_Arbeitsverzeichnis%=%_PDFverzeichnis%%%
"%COMMANDER_EXE%" /O /S /T /R=%_ziel%
Die Commander Parameter anpassen nach Geschmack, zB neuer Tab, im Zielfenster öffnen, etc.
Neuen Button erstellen mit
Befehl:
~PfadZu~\TC_CD_ArbeitPDF.cmd
Parameter:
"%P"
"Als Symbol" anhaken
Zum Testen im Fehlerfalle:
"Als Symbol" aus
In der .cmd "@echo off" entfernen und am Ende ein "pause" anfügen.
Re: Kommando zum Verzeichniswechsel
2chapolote
Button:
Button:
Code: Select all
TOTALCMD#BAR#DATA
%ComSpec% /q/v/c set
"p=%P"&&"%|COMMANDER_EXE|" /O0 /S "!p:\Arbeitsverzeichnis\=\PDFVerzeichnis\!"
wcmicon2.dll,80
Ändern des aktuellen Ordners des aktiven Panels, indem man "\Arbeitsverzeichnis\" durch "\PDFVerzeichnis\" ersetzt
1
Overquoting is evil! 👎
Re: Kommando zum Verzeichniswechsel
Danke für die Antworten.
Der Code von ZoSTeR funktioniert, super! 1000 Dank.
Der von Fla$her aber nicht, da bleibt der TC einfach im Arbeitsverzeichnis. Könnt das damit zu tun haben, daß in der Pfadangabe Ordner sind, die Leerzeichen beinhalten? Wenn ich nämlich bei ZoSTeR die Anführungszeichen bei Parameter weglasse, funktioniert der Code auch nicht und es wird mir das Mutterverzeichnis des ersten Ordners angezeigt, der eben ein Leerzeichen beinhaltet.
Grüße, Joe
Der Code von ZoSTeR funktioniert, super! 1000 Dank.
Der von Fla$her aber nicht, da bleibt der TC einfach im Arbeitsverzeichnis. Könnt das damit zu tun haben, daß in der Pfadangabe Ordner sind, die Leerzeichen beinhalten? Wenn ich nämlich bei ZoSTeR die Anführungszeichen bei Parameter weglasse, funktioniert der Code auch nicht und es wird mir das Mutterverzeichnis des ersten Ordners angezeigt, der eben ein Leerzeichen beinhaltet.
Grüße, Joe
Re: Kommando zum Verzeichniswechsel
Nein, Leerzeichen sind kein Hindernis für den Code. Welche Version von TC haben Sie?chapolote wrote: 2024-01-28, 07:02 UTCKönnt das damit zu tun haben, daß in der Pfadangabe Ordner sind, die Leerzeichen beinhalten?
Overquoting is evil! 👎
Re: Kommando zum Verzeichniswechsel
Die Version war es. Hatte noch eine 10.0 drauf, jetzt die aktuellste und dann funktioniert das auch.
Hab mal versucht, mich etwas in batch programmierung einzulesen, aber so recht verstehe ich das noch nicht.
Meine Idee wäre jetzt folgende gewesen, den Code vo ZoSTeR daraufhin zu erweitern, daß ich sozusagen switchen kann. Also eine If-Abfrage, und wenn ich im Ordner Arbeitsverzeichniss bin, den durch PDFVerzeichnis zu ersetzen, und wenn ich im PDFVerzeichnis bin, dann eben wieder zurück ins Arbeitsverzeichniss.
Da hapert es jetzt erst einmal primär daran, daß ich zwar haufenweise Beispiele finde, wie ich einen Teilstring in einer Datei finde, aber nichts darüber, wie ich einen Teilstring in einem String, hier also der Pfadangabe, finden kann.
Dürfte ich Euch dazu nochmal strapazieren, bitte?
Danke und Grüße, chapolote
Hab mal versucht, mich etwas in batch programmierung einzulesen, aber so recht verstehe ich das noch nicht.
Meine Idee wäre jetzt folgende gewesen, den Code vo ZoSTeR daraufhin zu erweitern, daß ich sozusagen switchen kann. Also eine If-Abfrage, und wenn ich im Ordner Arbeitsverzeichniss bin, den durch PDFVerzeichnis zu ersetzen, und wenn ich im PDFVerzeichnis bin, dann eben wieder zurück ins Arbeitsverzeichniss.
Da hapert es jetzt erst einmal primär daran, daß ich zwar haufenweise Beispiele finde, wie ich einen Teilstring in einer Datei finde, aber nichts darüber, wie ich einen Teilstring in einem String, hier also der Pfadangabe, finden kann.
Dürfte ich Euch dazu nochmal strapazieren, bitte?
Danke und Grüße, chapolote
Re: Kommando zum Verzeichniswechsel
Batch ist wirklich keine dankbare "Sprache", würde auch lieber PowerShell nutzen, aber leider ist der Aufruf für solch kurze Geschichten zu mühsam und langsam.
Zum Wechsel:
Code: Select all
@echo off
SETLOCAL EnableDelayedExpansion
set _ADir=\Mein Arbeitsverzeichnis\
set _PDir=\Mein PDF-Verzeichnis\
set _quelle=%1
call set _test_A=%%_quelle:%_ADir%=xxx%%
call set _test_P=%%_quelle:%_PDir%=xxx%%
if not %_test_A%==%_quelle% (
call set _ziel=%%_quelle:%_ADir%=%_PDir%%%
"%COMMANDER_EXE%" /O /S /L=!_ziel!
) else (
if not %_test_P%==%_quelle% (
call set _ziel=%%_quelle:%_PDir%=%_ADir%%%
"%COMMANDER_EXE%" /O /S /L=!_ziel!
)
)
Wenn das Vergleichsergebnis ungleich ist, hat man einen Treffer.
Auch nervig in Batch: hier muss man DelayedExpansion aktivieren um später gesetzte Variabeln mit !var! abzufragen.
Re: Kommando zum Verzeichniswechsel
Code: Select all
@setlocal enabledelayedexpansion
@set "p=!cd!\"&set a=\Arbeitsverzeichnis\&set n=\PDFVerzeichnis\
@if /i "!p!"=="!p:%a%=!" (call set "p=%%p:!n!=!a!%%") else call set "p=%%p:!a!=!n!%%"
@"%COMMANDER_EXE%" /O0 /S "!p!"
Overquoting is evil! 👎
Re: Kommando zum Verzeichniswechsel
Herzlichsten Dank, so ist das perfekt. Und Dank auch für die verständnisvolle Antwort, was das Batch-Programmieren angeht 
@Fla$her: ich hab keine Idee, wo ich Deinen Code einfügen soll. Auch in eine cmd-Datei dieses Mal? Im TC-Dialog kann ich ja keine Mehrzeiler einfügen und ich vermute, Dein Code gehört doch grundsätzlich in die Kommando-Zeile, richtig?
Was ist eigentlich genau der Unterschied zwischen Deiner Version und der von ZoSTeR? Oder einfach nur ein anderes Vorgehen? Bei der ersten Version, dachte ich zumindest, ist es einfach, daß man ohne eine cmd-Datei auskommt,oder?
Grüße, chapolote

@Fla$her: ich hab keine Idee, wo ich Deinen Code einfügen soll. Auch in eine cmd-Datei dieses Mal? Im TC-Dialog kann ich ja keine Mehrzeiler einfügen und ich vermute, Dein Code gehört doch grundsätzlich in die Kommando-Zeile, richtig?
Was ist eigentlich genau der Unterschied zwischen Deiner Version und der von ZoSTeR? Oder einfach nur ein anderes Vorgehen? Bei der ersten Version, dachte ich zumindest, ist es einfach, daß man ohne eine cmd-Datei auskommt,oder?
Grüße, chapolote
Re: Kommando zum Verzeichniswechsel
2chapolote
Aus Ihrer vorherigen Nachricht habe ich verstanden, dass Sie sich mit .bat befassen möchten, also habe ich ihn bereitgestellt. Der Ansatz ist ungefähr ähnlich, aber es gibt weniger Code. Ich schrieb ihn, bevor ich die vorherige Veröffentlichung sah.
Der Button ist sofort einsatzbereit, nachdem Sie die Batch-Datei auf den Buttonbar gezogen und den Startpfad in den Einstellungen gelöscht haben.
Aus Ihrer vorherigen Nachricht habe ich verstanden, dass Sie sich mit .bat befassen möchten, also habe ich ihn bereitgestellt. Der Ansatz ist ungefähr ähnlich, aber es gibt weniger Code. Ich schrieb ihn, bevor ich die vorherige Veröffentlichung sah.
Der Button ist sofort einsatzbereit, nachdem Sie die Batch-Datei auf den Buttonbar gezogen und den Startpfad in den Einstellungen gelöscht haben.
Overquoting is evil! 👎
Re: Kommando zum Verzeichniswechsel
Naja, befassen vielleicht nicht wirklich, dazu fehlt mir leider die Zeit. Aber zumindest halbwegs nachvollziehen, was der Code macht. Ich finde mich so halbwegs in vba, php und javascript zurecht, aber .bat ist ja echt nicht schön zu lesen, geschweige denn, intuitiv zu verstehen. Hab mich aber, ehrlich gesagt, auch noch nicht wirklich mit den Basics vertraut gemacht.Fla$her wrote: 2024-01-28, 20:15 UTC 2chapolote
Aus Ihrer vorherigen Nachricht habe ich verstanden, dass Sie sich mit .bat befassen möchten, also habe ich ihn bereitgestellt. Der Ansatz ist ungefähr ähnlich, aber es gibt weniger Code. Ich schrieb ihn, bevor ich die vorherige Veröffentlichung sah.
Der Button ist sofort einsatzbereit, nachdem Sie die Batch-Datei auf den Buttonbar gezogen und den Startpfad in den Einstellungen gelöscht haben.
Vielen herzlichen Dank für die bereitwillige, freundliche und flexible Hilfe an Euch beide!!!!
Re: Kommando zum Verzeichniswechsel
Bitte!
In diesem Fall sollten Sie auch keine Probleme mit JScript/VBScript (ANSI) haben.chapolote wrote: 2024-01-29, 06:17 UTC Ich finde mich so halbwegs in vba, php und javascript zurecht
.js
Code: Select all
/*************************** JS **************************
Zwischen zwei Teilen des Arbeitsverzeichnispfads wechseln
Parameter: "%P" <Pfad Teil 1> <Pfad Teil 2>
Beispil: "%P" \Arbeitsverzeichnis\ \PDFVerzeichnis\
*********************************************************/
a = WSH.Arguments
if(a(0).indexOf(a(1))>-1){i = 1; n = 2} else {if(a(0).indexOf(a(2))>-1){i = 2; n = 1} else WSH.quit()}
WSH.CreateObject('WScript.Shell').exec('%COMMANDER_EXE% /O0 /S "' + a(0).replace(a(i), a(n)) + '"')
.vbs
Code: Select all
'—————————————————————————— VBS ———————————————————————————
' Zwischen zwei Teilen des Arbeitsverzeichnispfads wechseln
' Parameter: "%P" <Pfad Teil 1> <Pfad Teil 2>
' Beispil: "%P" \Arbeitsverzeichnis\ \PDFVerzeichnis\
'——————————————————————————————————————————————————————————
Set A = WSH.Arguments
If InStr(1, A(0), A(1), 1) Then i = 1: n = 2 Else _
If InStr(1, A(0), A(2), 1) Then i = 2: n = 1 Else WSH.Quit
CreateObject("Wscript.Shell").Exec "%COMMANDER_EXE% /O0 /S """ & Replace(A(0), A(i), A(n)) & """"
Overquoting is evil! 👎