2.Fenster mit gleichen Ordner auf NAS öffnen

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
T_a_u_r_e_c
Junior Member
Junior Member
Posts: 21
Joined: 2015-07-17, 06:28 UTC

2.Fenster mit gleichen Ordner auf NAS öffnen

Post by *T_a_u_r_e_c »

Hallo,
ich habe ein nerviges Problem und hoffe jemenad hat eine Lösung.

Ich brauche einen Button der mir im gegenüberliegenden Fenster den gleichen Ordner, der aber auf einem NAS liegt, öffnet
Das Ganze soll ohne zusätzliche Software, villeicht per script funktionieren.

Beschreibung: :)

Im linken Fenster ist der Pfad:
c:\Arbeit\Projekte\2015001001\Anleitungen\Visualisierung\
geöffnet.
Mit einem Button klick soll im rechten Fenster der Pfad:
\\NAS\Backup\Projekte\2015001001\Anleitungen\Visualisierung\
geöffnet werden.

Das Script soll also den ersten Teil des Pfades austauschen und als Öffnen Befehl an das zweite Fenster übergeben.

Ich habe hier im Forum zwar etwas gefunden, dafür muss aber zusätzliche Software installiert werden, was ich in der Firma leider nicht darf.

Es wäre toll wenn jemenad dafür eine Lösung hätte

Gruß

T_a_u_r_e_c
JOUBE
Power Member
Power Member
Posts: 1666
Joined: 2004-07-08, 08:58 UTC

Post by *JOUBE »

2012 habe ich mir einmal etwas Ähnliches gestrickt, benutze es aber nur selten. Viellecht nützt es - als Anregung - etwas...


In wincmd.ini im Abschnitt [Shortcuts] eintragen:

Code: Select all

[Shortcuts]
CA+RIGHT=em_Samefolder_RigthArrow
CA+LEFT=em_Samefolder_LeftArrow
In usercmd.ini eintragen:

Code: Select all

[em_Samefolder_RigthArrow]
cmd=%COMMANDER_PATH%\Cmds\SameFolderOnOtherDrive.cmd
param=Tc %X "%P" %P%N "%T" %T%M RightArrow
iconic=1

[em_Samefolder_LeftArrow]
cmd=%COMMANDER_PATH%\Cmds\SameFolderOnOtherDrive.cmd
param=Tc %X "%P" %P%N "%T" %T%M LeftArrow
iconic=1
Im Unterordner Cmds (unterhalb des TC-Pfads) die Datei SameFolderOnOtherDrive.cmd erstellen:

Code: Select all

@echo off & setlocal
if "%6"=="RightArrow" goto #RArrow
if "%6"=="LeftArrow"  goto #LArrow
goto #Ende

:#RArrow
  if exist "%~D4%~P2%~NX3\*.*"     set dir=%~D4%~P2%~NX3&     set Target=R& goto #Run
  if exist "%~D4%~P2*.*"           set dir=%~D4%~P2&          set Target=R& goto #Run
  if exist "%~D4%~P4%~P2%~NX3\*.*" set dir=%~D4%~P4%~P2%~NX3& set Target=R& goto #Run
  if exist "%~D4%~P4%~P2*.*"       set dir=%~D4%~P4%~P2&      set Target=R& goto #Run
  goto #Ende

:#LArrow
  if exist "%~D2%~P4%~NX5*.*" set dir=%~D2%~P4%~NX5& set Target=L& goto #Run
  if exist "%~D2%~P4*.*"      set dir=%~D2%~P4&      set Target=L& goto #Run
  goto #Ende

:#Run
  start "" "%COMMANDER_PATH%\TOTALCMD.EXE" /o /%Target%="%dir%"

:#Ende
Strg+Alt+PfeilRechts bzw Strg+Alt+PfeilLinks löst die gewünschte Aktion aus, wenn man auf der einen Fensterseite im QuellPfad steht und auf der anderen Fensterseite das gewünschte Laufwerk des ZielPfads angewählt hat.

HTH

JOUBE
User avatar
Dalai
Power Member
Power Member
Posts: 9974
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Ist möglicherweise nicht ganz das, was du suchst, aber vielleicht hilft dir ein cm_SyncChangeDir auf einem Button. Allerdings muss für dessen Benutzung sinnvollerweise die Verzeichnisstruktur identisch sein.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

PowerShell: Lokaler Pfad auf Share im anderen Fenster öffnen

Post by *Stefan2 »

Hallo und willkommen im Forum.
T_a_u_r_e_c wrote:Ich brauche einen Button der mir im gegenüberliegenden Fenster
den gleichen Ordner, der aber auf einem NAS liegt, öffnet


Im linken Fenster ist der Pfad:
c:\Arbeit\Projekte\2015001001\Anleitungen\Visualisierung\
geöffnet.

Mit einem Button klick soll im rechten Fenster der Pfad:
\\NAS\Backup\Projekte\2015001001\Anleitungen\Visualisierung\
geöffnet werden.

Das Script soll also den ersten Teil des Pfades austauschen und als Öffnen Befehl an das zweite Fenster übergeben.

Mit PowerShell

1.) Hole den aktuellen Pfad im aktiven Fenster mittels %P
2.) Ersetze 'c:\Arbeit\'  mit   '\\NAS\Backup\'
3.) Öffne den neuen Pfad im laufenden TC im gerade inaktiven Fenster

Dazu lege einen Button (click) (oder user commando (click) ) im TotalCommander an:

Code: Select all

Kommando/cmd
PowerShell -NoExit -NoProfile -ExecutionPolicy Bypass 

Parameters/param
$TARGET='%P' -replace('c:\\Arbeit\\', '\\NAS\Backup\'); """$env:Commander_Exe /O /S /R=$TARGET""";



- - -


Erklärung:


Der TC-Button (bzw. das User-Kommando) startet eine PowerShell, diese führt ein Suchen&Ersetzen
am übergebenen Source-Path aus, und öffnet den so erzeugten neuen Pfad im TC Target Panel.


$TARGET='%P' -replace('c:\\Arbeit\\', '\\NAS\Backup\');

$TARGET is eine PoSh Variable, -replace("x","y") ein PoSh Befehl, welcher standardmäßig mit RegEx arbeitet, daher wurde der Backslash im "Suchenteil" escaped.

%P ist ein TC-eigener Parameter. Mehr Info: klicke Rechts auf einen Button, wähle "Ändern", drücke die F1-Taste...

Hilfe > Index > [Programmparameter ]
%P bewirkt, dass der Pfad des Quellverzeichnisses in die Kommandozeile gestellt wird (inkl. \ am Ende).






"""$env:Commander_Exe /O /S /R=$TARGET""";

Im TC muss ich die Quotes escapen: " >>> """

$env: ist ein PoSh Befehl um die Umgebungsvariable %Commander_Exe% auszulesen.

/O/S/R sind TC Parameter. Mehr Info: drücke die F1-Taste, >>> Konfiguration und Parameter >>> Kommandozeilenparameter


Hilfe > Inhalt > Konfiguration und Parameter > Kommandozeilenparameter
Syntax:
totalcmd.exe [/o] [/n] [/L=LW:\Verzeichnis1] [/R=LW:\Verzeichnis2] [/i=name.ini] [/F=ftpname.ini]

Parameter:
/O Falls Total Commander bereits läuft, aktivieren und Pfad(e) an dieses Programm übergeben
/L= Setze Pfad des linken Fensters (bzw. Quelle, Aktiv)
/R= Setze Pfad des rechten Fensters (bzw. Ziel, Inaktiv)
/S Interpretiert die übergebenen Verzeichnisse als Quelle/Ziel statt links/rechts (für Benutzung mit /O).






HTH?

EDIT: Expliziter Hinweis zum Erstellen eines Buttons bzw. User-Kommandos in TC hinzugefügt.
Last edited by Stefan2 on 2015-07-26, 09:11 UTC, edited 1 time in total.
User avatar
Lefteous
Power Member
Power Member
Posts: 9537
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

Ich finde das ist ein recht typischer Anwendungsfall. Da könnte man glatt eine interne Lösung in Betracht ziehen ;-)

Ich stelle mir das in etwa so vor: Im linken Fenster ist ein bestimmer Ordner in C geöffnet (z.B. C:\Pictures\Holidays\2015). Dann klicke ich bei den Laufwerksbuttons auf der anderen Seite ein bestimmtes Laufwerk/Gerät etc. an und drücke dabei einen bestimmten Modifizierer, also Strg+Umschalt oder so. Daraufhin wird dann der betreffende Ordner dort geöffnet, also in diesem Fall \\NAS-A\Pictures\Holidays\2015.
T_a_u_r_e_c
Junior Member
Junior Member
Posts: 21
Joined: 2015-07-17, 06:28 UTC

Post by *T_a_u_r_e_c »

Hallo,
ich bin von den Socken....

Vielen Dank für die Antworten. Ich werde mich am Montag sofort an die Arbeit machen.

Super

lg T_a_u_r_e_c

P.S. #Lefteous, die Idee ist klasse kann ich nur zustimmen :-)
T_a_u_r_e_c
Junior Member
Junior Member
Posts: 21
Joined: 2015-07-17, 06:28 UTC

Post by *T_a_u_r_e_c »

Hallo,

@Stefan2
leider hat das bei mir nicht geklappt.
Es hat sich zwar ein Powershell fenster geöffnet, aber ich konnte dem script nicht mitteilen das es auch den Totalcmd öffnet soll.
Auch blieb das Fenster immer offen.

@JOUBE
Dir auch vielen Dank.
Leider habe ich icht wirklich begriffen was die ganze Parameter bedeuten

naja wie auch immer.
Durch eure Scripts habe ich wenigstens den richtigen Ansatz und Anregung bekommen.
Ich habe mir eine bat geschrieben die für mich funktioniert.
Auf der Firma klappt das jetzt einwandfreii. Danke
(auch ein danke von den Kollegen)

Für zu Hause habe ich mir auch ein Script angefertigt

Für User die so etwas auch gebrauchen können, hier meine Lösung:
Batch file Name: SameFolderOnNas.cmd


-------------------------------------------------------------------------------------

Code: Select all

:: Batchfile für den Totalcmd zum Öffnen eine Ordners (Zielfenster) in abhängigkeit des Quellfensters.
:: Das Script sucht im Übergabepfad ob ein Vergleichssrting enthalten ist.
:: Wenn der String enthalten ist wird der String gegen ein Setzstring ausgetauscht.
:: Der Totalcmd wird mit dem neuen Ziel aufgerufen. (Quellfenster mit neuen Zielfenster)
::
:: Im Totalcmd einen Button mit dem Batchaufruf und den Parameter: %P%N%2=1 erstellt
:: Der Batchparameter "keepopen" (=1) setzt den Pausebefehl. (zum lesen der Echo ausgaben) 

@echo off
setlocal enabledelayedexpansion
:: Batchparameter
set keepopen=%2
:: Totalcmd Parameter
set "totalcmd=C:\Totalcmd\TOTALCMD.EXE"
set AktiverPfad=%~dp1
set Target=%~dp1
:: Vergleichsstring
set E=e:\
set F=f:\Video_Serien_A_L\
Set G=g:\Video_Serien_M_Z\
:: Setzstring
set NASSer=\\DS415\Video Serien\
set NASVid=\\DS415\

::---------------------script-------------------------------
:: String suchen
echo %AktiverPfad%|findstr %F% >nul &&( goto Vid_A_L )
echo %AktiverPfad%|findstr %G% >nul &&( goto Vid_M_Z )
goto :NAS

:: Ziele setzen
:Vid_A_L
call set Target=%%Target:!F!=!NASSer!%%
goto :proof

:Vid_M_Z
call set Target=%%Target:!G!=!NASSer!%%
goto :proof

:NAS
call set Target=%%Target:!E!=!NASVid!%%
call set Target=%Target:_= %
goto :proof

:: Zielordner prüfen
:proof
IF EXIST %Target% (
goto :execute
) ELSE (
goto :fault
)

:: Fehlerausgabe
:fault
echo Der Pfad konnte nicht gefunden werden
echo Zielpfad für Totalcmd:
echo %Target%
goto :End

::Ausführung
:execute
echo Zielpfad für Totalcmd:
echo %Target%
"%totalcmd%" /O /S /R="%Target%"
goto :End

:: Batch ende
:End
if %keepopen%==1 (
pause
)
endlocal
exit
-------------------------------------------------------------------------------------


Gruss Taurec
P.S. wenn jemand korrekturen oder verbesserung anregen möchte: na dann los :-)
Andreas85
Junior Member
Junior Member
Posts: 35
Joined: 2015-08-21, 09:35 UTC
Location: Harz

Post by *Andreas85 »

Warum nicht:

cm_MatchSrc

Funzt bei mir mit lokalen, Netzwerk- und UNC-Pfaden.

Gruß
Andreas
User avatar
Lefteous
Power Member
Power Member
Posts: 9537
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2Andreas85
Warum nicht:

cm_MatchSrc

Funzt bei mir mit lokalen, Netzwerk- und UNC-Pfaden.
Weil cm_MatchSrc ja nur den gleichen Ordner auf der anderen Seite anzeigt und nicht den gleichen Ordner auf einem anderen Laufwerk oder Server.
Post Reply