Interne Kommandos: mehrere auf einmal u/o gemischt in Batch?
Moderators: Hacker, Stefan2, white
- ikarus1969
- Junior Member
- Posts: 6
- Joined: 2016-09-14, 10:28 UTC
- Location: Vienna
Interne Kommandos: mehrere auf einmal u/o gemischt in Batch?
Einen schönen Tag zusammen!
Ich hätte folgende Frage: für einen Eintrag im Startermenü: ist es möglich mehr als ein internes Kommando "hinter" einen Menüeintrag zu legen bzw. als Kommando eine Datei anzugeben, in der mehrere interne KOmmandos eingetragen werden können (eventuell gemischt mit DOS-batch Kommandos)?
Meine Suche führte mich entweder zu uralten Diskussionen über eine Skriptsprache für TC oder zu Lösungen mit externen Tools wie AutoHotkey und Send-Message-Möglichkeiten.
Usprung meiner Frage: ich erzeuge öfters eine ZIP-Datei. Dafür gehe ich so vor: im rechten Panel navigiere ich in das Verzeichnis, in dem die ZIP-Datei liegt. Dort lösche ich die ZIP-Datei. Dann navigiere ich im linken Panel zu dem verzeichnis, das ich als ZIP Datei packen möche, lösche alle enthaltenen BAK.Dateien (über die Alt-F7-Suche, "anwenden" und löschen der gefundenen Dateien), und packe dann das Verzeichnis mit "Alt-F5" vom linken in das rechte Panel.
Diesen Vorgang möchte ich, falls möglich, mit TC automatisieren.
Die internen Kommandos für alle Einzelschritte wären ja vorhanden (wenn ich mich nicht irre). Ob die Zusammenfassung dieser Einzelkommandos möglich ist und wenn ja, wie, das weiss ich allerdings nicht.
Ich hätte folgende Frage: für einen Eintrag im Startermenü: ist es möglich mehr als ein internes Kommando "hinter" einen Menüeintrag zu legen bzw. als Kommando eine Datei anzugeben, in der mehrere interne KOmmandos eingetragen werden können (eventuell gemischt mit DOS-batch Kommandos)?
Meine Suche führte mich entweder zu uralten Diskussionen über eine Skriptsprache für TC oder zu Lösungen mit externen Tools wie AutoHotkey und Send-Message-Möglichkeiten.
Usprung meiner Frage: ich erzeuge öfters eine ZIP-Datei. Dafür gehe ich so vor: im rechten Panel navigiere ich in das Verzeichnis, in dem die ZIP-Datei liegt. Dort lösche ich die ZIP-Datei. Dann navigiere ich im linken Panel zu dem verzeichnis, das ich als ZIP Datei packen möche, lösche alle enthaltenen BAK.Dateien (über die Alt-F7-Suche, "anwenden" und löschen der gefundenen Dateien), und packe dann das Verzeichnis mit "Alt-F5" vom linken in das rechte Panel.
Diesen Vorgang möchte ich, falls möglich, mit TC automatisieren.
Die internen Kommandos für alle Einzelschritte wären ja vorhanden (wenn ich mich nicht irre). Ob die Zusammenfassung dieser Einzelkommandos möglich ist und wenn ja, wie, das weiss ich allerdings nicht.
TC mittels einer Batch automatisieren scripten steuern
Hallo ika und willkommen.
Mehrere interne Kommandos kannst du, durch ein Komma getrennt, nacheinander aufrufen.
Diese Kommand-kette kanst du auf einen Button legen,
in das Startermenü eintragen,
oder als eigenes benutzerdefiniertes neues Kommando in die usercmd.ini schreiben.
Dieses benutzerdefinierte Kommando kannst du dann in das (Haupt-)Menü einbauen.
Als Beispiele sieh' dir mal das Folgende an:
"Extended English Menus for Total Commander by petermad" - http://www.totalcmd.net/authors/1223914.html
http://ghisler.ch/board/viewtopic.php?p=287481#287481
- - -
Aber du kannst auch die aktuellen Pfade der Pannels
an eine externe Batchdatei übergeben, und dort,
etwa mit 7zip, alles in dieser Batch erledigen lassen.
Dort hast du auch bessere Kontrolle über zB Pausen und Arbeitsabläufe.
Noch besser aber mittels VBScript, PowerShell oder AutoHotkey.
CMD: meineBatch.cmd "%P" "%T"
Für die Parameter %P/%T öffne mal einen Button, und drück die F1-Taste.
- - -
EDIT:
BEISPIEL mittels einer DOS Batch:
Mehrere interne Kommandos kannst du, durch ein Komma getrennt, nacheinander aufrufen.
Diese Kommand-kette kanst du auf einen Button legen,
in das Startermenü eintragen,
oder als eigenes benutzerdefiniertes neues Kommando in die usercmd.ini schreiben.
Dieses benutzerdefinierte Kommando kannst du dann in das (Haupt-)Menü einbauen.
Als Beispiele sieh' dir mal das Folgende an:
"Extended English Menus for Total Commander by petermad" - http://www.totalcmd.net/authors/1223914.html
http://ghisler.ch/board/viewtopic.php?p=287481#287481
- - -
Aber du kannst auch die aktuellen Pfade der Pannels
an eine externe Batchdatei übergeben, und dort,
etwa mit 7zip, alles in dieser Batch erledigen lassen.
Dort hast du auch bessere Kontrolle über zB Pausen und Arbeitsabläufe.
Noch besser aber mittels VBScript, PowerShell oder AutoHotkey.
CMD: meineBatch.cmd "%P" "%T"
Für die Parameter %P/%T öffne mal einen Button, und drück die F1-Taste.
- - -
EDIT:
BEISPIEL mittels einer DOS Batch:
Code: Select all
@ECHO OFF
GOTO _START
-------------------------------------------------------------------------------
Usprung meiner Frage: ich erzeuge öfters eine ZIP-Datei. Dafür gehe ich so vor:
im rechten Panel navigiere ich in das Verzeichnis, in dem die ZIP-Datei liegt.
Dort lösche ich die ZIP-Datei.
Dann navigiere ich im linken Panel zu dem verzeichnis, das ich als ZIP Datei packen möche,
lösche alle enthaltenen BAK.Dateien (über die Alt-F7-Suche, "anwenden" und löschen der gefundenen Dateien),
und packe dann das Verzeichnis mit "Alt-F5" vom linken in das rechte Panel.
TotalCommander Button:
CMD: "D:\rive\path to\my script.CMD"
PARAM: "%P" "%T"
Zur Erklärung der Parameter %P/%T öffne mal einen Button im TC und drück die F1-Taste.
-------------------------------------------------------------------------------
:_START
SET "ActivePanel=%~1"
SET "TargetPanel=%~2"
ECHO.
ECHO Aktives Panel: %ActivePanel%
ECHO.
ECHO.
ECHO GEPLANTER ABLAUF:
ECHO --------------------------
ECHO.
ECHO DEL %TargetPanel%*.ZIPx
ECHO DEL %ActivePanel%*.BAKx
ECHO.
ECHO PACK von %ActivePanel%
ECHO nach %TargetPanel%
ECHO.
ECHO.
ECHO Ablauf starten mit ENTER-Taste (Strg+C Tasten zum Abbrechen)
ECHO.
PAUSE >NUL
ECHO.
ECHO OK, wir fangen an:
ECHO ---------------------------
DEL %TargetPanel%*.ZIPx
DEL %ActivePanel%*.BAKx
7za a -tzip "%TargetPanel%MeinNeues.ZIP" *.*
ECHO.
ECHO ENDE
ECHO ---------------------------
ECHO.
PAUSE
Last edited by Stefan2 on 2016-09-15, 08:08 UTC, edited 1 time in total.
- ikarus1969
- Junior Member
- Posts: 6
- Joined: 2016-09-14, 10:28 UTC
- Location: Vienna
Hallo Stefan,
vielen Dank für Deine Antwort!
Ich bin jetzt dank Deiner Antwort schon fast am Ziel.
Durch die Verkettung der "cm_..."-Kommandos konnte ich das meiste erledigen.
Was anfangs nicht funktioniert hat war das Einbeziehen der Verzeichniswechsel in die Verkettung (Kommandos mit Parameter wie z.B. "CD..." oder "SELECTFILES"). In diesem Fall habe dann für jedes benötigte "CD" und "SELECTFILES" ein benutzerdefiniertes Kommando erzeugt ("em_..."), das ich dann in die Verkettung einbeziehen konnte.
Jetzt bräuchte ich noch ein Kommando mit dem man ein bestimmtes Verzeichnis markieren kann - "SELECTFILES" scheint nicht zu funktionieren.
Ich habe z.B. oder probiert und auch eine Variante mit dem kompletten Pfad des Verzeichnisses, was leider nichts gefruchtet hat.
Der allerletzte Schritt - das Packen des markierten Verzeichnis bringt nach "cm_PackFiles" noch den Dialog, den ich, wenn möglich, übergehen möchte.
Gibt's dazu eine Alternative zu "cm_PackFiles"? (außer jetzt z.B. 7zip mit Parameter zu starten)
Vielen Dank aber auf alle Fälle - die beiden Links aus Deinem Post sind sehr hilfreich!
Reinhart
vielen Dank für Deine Antwort!
Ich bin jetzt dank Deiner Antwort schon fast am Ziel.
Durch die Verkettung der "cm_..."-Kommandos konnte ich das meiste erledigen.
Was anfangs nicht funktioniert hat war das Einbeziehen der Verzeichniswechsel in die Verkettung (Kommandos mit Parameter wie z.B. "CD..." oder "SELECTFILES"). In diesem Fall habe dann für jedes benötigte "CD" und "SELECTFILES" ein benutzerdefiniertes Kommando erzeugt ("em_..."), das ich dann in die Verkettung einbeziehen konnte.
Jetzt bräuchte ich noch ein Kommando mit dem man ein bestimmtes Verzeichnis markieren kann - "SELECTFILES" scheint nicht zu funktionieren.
Ich habe z.B.
Code: Select all
SELECTFILES "Verzeichnisname"
Code: Select all
SELECTFILES "Verzechnisname\"
Der allerletzte Schritt - das Packen des markierten Verzeichnis bringt nach "cm_PackFiles" noch den Dialog, den ich, wenn möglich, übergehen möchte.
Gibt's dazu eine Alternative zu "cm_PackFiles"? (außer jetzt z.B. 7zip mit Parameter zu starten)
Vielen Dank aber auf alle Fälle - die beiden Links aus Deinem Post sind sehr hilfreich!
Reinhart
- ikarus1969
- Junior Member
- Posts: 6
- Joined: 2016-09-14, 10:28 UTC
- Location: Vienna
für "SELECTFILES" hab ich im Helpfile gelesen, dass man mit sog. "Modifikatoren" festlegen kann, welche Typen von Einträgen man selektieren kann.
Für Verzeichnisse wäre das ein "D". Es steht nur nirgends, wie - in welcher Form - man den Modifikator angeben muss.
Kanns Du mir da weiterhelfen?
Probiert habe ich, und
Für Verzeichnisse wäre das ein "D". Es steht nur nirgends, wie - in welcher Form - man den Modifikator angeben muss.
Kanns Du mir da weiterhelfen?
Probiert habe ich
Code: Select all
SELECTFILES /D "Verzeichnisname"
Code: Select all
SELECTFILES D "Verzeichnisname"
Code: Select all
SELECTFILES "Verzeichnisname" D
Man is incredible: in a world full of untold secrets he invented boredom
SELECTFILES modifiers Modifikatoren
Modifikatoren? Ja, da war 'was...
Ich glaube, die muss man DIREKT an den Befehl anfügen???
selectfilesD
Eine Forumsuche hilft da oft, hat aber auch bei mir etwas gedauert:
http://ghisler.ch/board/viewtopic.php?t=27657[face=comicsansms]&highlight=selectfiles+modifiers[/face]
selectfiles modifiers Modifikatoren
Danke, Sombra.
Ich glaube, die muss man DIREKT an den Befehl anfügen???
selectfilesD
Eine Forumsuche hilft da oft, hat aber auch bei mir etwas gedauert:
http://ghisler.ch/board/viewtopic.php?t=27657[face=comicsansms]&highlight=selectfiles+modifiers[/face]
selectfiles modifiers Modifikatoren
Sombra wrote:[em_SeleccionDePanelActual2Destino]
menu=Ausgewähltes auch im Target auswählen
Select in target panel, items marked in source panel
cmd=SELECTFILESBTS
Param=%Z%S
[em_DesMarcarPanelActual2Destino]
menu=Ausgewähltes im Target ABwählen
Unselect in target panel, items marked in source panel
cmd=SELECTFILESBTUS
Param=%Z%S
---
[em_SeleccionarPanelDestino2Actual]
menu=Im Target Ausgewähltes hier ebenfalls auswählen
Select in current panel, items marked in target panel
cmd=SELECTFILESBS
Param=%Z%R
[em_DesMarcarPanelDestino2Actual]
menu=Im Target Ausgewähltes hier ABwählen
Unselect in current panel, iteme marked in target panel
cmd=SELECTFILESUBS
Param=%Z%R
Danke, Sombra.
- ikarus1969
- Junior Member
- Posts: 6
- Joined: 2016-09-14, 10:28 UTC
- Location: Vienna
Mir ebenfalls nicht, und ich träume viel.ikarus1969 wrote:oh gott- dass der Modifikator direkt an das Kommando angehängt wird wäre mir nicht im Traum eingefallen...
Auch nicht, dass man diese Modifikatoren kombinieren kann.
Habe eine Suggestion erstellt, die Hilfe entsprechend anzupassen:
http://ghisler.ch/board/viewtopic.php?t=45671
mehrere interne Kommandos hintereinander ausführen?
Ich versuche mehrere interne Kommandos per Batch auszuführen, z.B.:
1. Mit folgendem Button klappt zwar der Verzeichniswechsel, aber warum wird das 2. Kommando cm_FileSync nicht aufgerunfen?
2. Habe es versucht mit Autohotkey und: http://www.ghisler.ch/wiki/index.php/AutoHotkey:_Send_a_command_to_Total_Commander
scheitere aber wieder beim cd-Kommando:
3. Das Kommando:
funktioniert grundsätzlich, bringt aber gelegentlich:
Code: Select all
cm_FocusLeft
cd <directory>
cm_FocusRight
cd <directory>
cm_FileSync
Code: Select all
Kommando: cd "C:\Users\", cm_FileSync
Startpfad: C:\IMG\
scheitere aber wieder beim cd-Kommando:
Code: Select all
AutoHotkeyU64.exe sendTCCommand.ahk cd C:\USERS
Code: Select all
AutoHotkeyU64.exe sendTCCommand.ahk cm_FileSync
Bin ich hier auf dem richtigen Weg mit AHK?---------------------------
Total Commander 9.0a
---------------------------
Access violation.
Access violation
Windows 10 10.0 (Build 10586), base: 0400000
Please report this error to the Author, with a description
of what you were doing when this error occurred!
Stack trace (x64):6A00F8
71707B 6F4FD9 829990 81E363 4368D9 919381 85C23B 9235CB
7FFD91901169
Press Ctrl+C to copy this report!
Continue execution?
---------------------------
Ja Nein
---------------------------
Tom - #81178 - 5 User licence - Klugheit, Gerechtigkeit, Tapferkeit und Mäßigung plus Kooperation.
Re: mehrere interne Kommandos hintereinander ausführen?
Weil Du hier einen MS-DOS Befehl mit einem internen Kommando von TC gemeinsam verwendet hast.tom*de wrote:Ich versuche mehrere interne Kommandos per Batch auszuführen, z.B.:
1. Mit folgendem Button klappt zwar der Verzeichniswechsel, aber warum wird das 2. Kommando cm_FileSync nicht aufgerunfen?Code: Select all
cm_FocusLeft cd <directory> cm_FocusRight cd <directory> cm_FileSync
Code: Select all
Kommando: cd "C:\Users", cm_FileSync Startpfad: C:\IMG\
Wenn Du jedoch einen em_Befehl anlegst, zB mit Namen em_C-Users und Kommando: cd C:\Users\ und danach
beide internen Befehle kombinierst - Kommando: em_C-Users, cm_filesync dann funktioniert das.
Wenn ich Deinen ersten Code jedoch richtig interpretiere möchtest Du zwei Verzeichnisse synchronisieren.
Ich habe mir szt. aus Forumsbeiträgen diese zwei Buttons notiert:
1. Aktuelle Verzeichnisse im linken und rechten Fenster von TC synchronisieren (separater Task)
Code: Select all
TOTALCMD#BAR#DATA
%COMMANDER_EXE%
/S=S:= "%X%Z%P" "%T"
TOTALCMD.EXE,32
AKTUELLE Verz. synchronisieren || sep. Task! || Vergleich startet SOFORT!
%COMMANDER_PATH%\
0
-1
2. Synchronisieren von zwei vordefinierten Verzeichnissen (separater Task)
Die beiden Pfade und den Tooltip mußt Du erst nach Deinen Wünschen anpassen!
Code: Select all
TOTALCMD#BAR#DATA
%Commander_Path%\TOTALCMD.EXE /S=S:= "C:\Program Files (x86)\MyPhoneExplorer" "D:\MyPhoneExplorer_Laufwerk-C"
wcmicons.dll,48
Synchronisieren von 2 vordefinierten Verzeichnissen, |zB "C:\Program Files (x86)\MyPhoneExplorer" |mit "D:\MyPhoneExplorer_Laufwerk-C"
0
-1
1. Markiere den Code (einfach die linke Maustaste gedrückt halten und über den Code drüberziehen, dann linke Maustaste loslassen)
2. Drücke die STRG-Taste und halte sie gedrückt, dann drücke den Buchstaben "C" (STRG + C = kopieren in die Zwischenablage)
3. Tätige einen Rechtsklick auf einen freien Platz in der Buttonbar [zB nach dem letzten Button oder zwischen den Buttons]
4. Klicke auf den Menüpunkt "Einfügen"
5. [Optional: Zeige (etwas länger) mit dem Cursor auf den neuen Button: "Tooltip" erscheint (-> Beschreibung zum Button)]
6. Nur für 2. Button(!) => Rechtsklick auf Button, dann "Ändern" -> im Feld Kommando beide Pfade anpassen
Gruß,
Karl
Karl
Danke Karl,
ja ich möchte mehrere Verzeichnisse auf zwei Rechnern synchronisieren - das klappt per Batch-CMD im Netzwerk und em_SyncFile (sep. Task) auch prima.
Allerdings geht dass nicht bei Port-Verbindung mit USB-Kabel:
http://www.ghisler.ch/board/viewtopic.php?t=45214&highlight=usb
Da funktioniert kein em_SyncFile nur das cm_SyncFile.
Also für jedes Verzeichnis einen Knopf/em_ anlegen war mir zu umständlich. Mit Deinem cut/paste wird der Aufwand schon geringer... Aber vielleicht geht das noch einfacher:
Vielleicht weiß jemand wie man per o.g. AHK-Script (Fernsteuerung des TC) die TC-Verzeichnisse eingestellt?
ja ich möchte mehrere Verzeichnisse auf zwei Rechnern synchronisieren - das klappt per Batch-CMD im Netzwerk und em_SyncFile (sep. Task) auch prima.
Allerdings geht dass nicht bei Port-Verbindung mit USB-Kabel:
http://www.ghisler.ch/board/viewtopic.php?t=45214&highlight=usb
Da funktioniert kein em_SyncFile nur das cm_SyncFile.
Also für jedes Verzeichnis einen Knopf/em_ anlegen war mir zu umständlich. Mit Deinem cut/paste wird der Aufwand schon geringer... Aber vielleicht geht das noch einfacher:
Vielleicht weiß jemand wie man per o.g. AHK-Script (Fernsteuerung des TC) die TC-Verzeichnisse eingestellt?
Tom - #81178 - 5 User licence - Klugheit, Gerechtigkeit, Tapferkeit und Mäßigung plus Kooperation.
Ja danke Tuska. Doch, mit der Verzeichnisliste <Strg+D> geht es (auch für den Fall einer PortZuPort-Verbindung) - doch ich möchte danach gleich das cm_SyncFile aufrufen.
wincmd.ini
Aber da muss ich soviel Testen drücken
denn ich habe mehrere Verzeichnisse zu synchronisieren und würde deshalb gerne so viel wie möglich nacheinander automatisiert aufrufen:
1. Change Directory (einstellen der 2 TC-Panels)
2. cm_SyncFile
- welches dann am besten gleich mit dem Vergleich und den richtigen Voreinstellungen startet
- Also genauso elegant wie mit dem TC-Sync in eigener Instanz (per Kommandozeile) möglich: totalcmd64.exe /S=S:=...
- aber dieses TC-Sync in eigener Instanz kennt (im Gegensatz zu Netzwerkverbindungen) meine bestehende TC-USB-Port2Port-Verbindung nicht... siehe: Verbindung über USB-Kabel
Deshalb erschien mir die Fernsteuerung per AHK Script vielversprechend, aber da bekomme ich das simple Einstellen der 2 TC-Panel nicht hin - vermutlich weil das AHK Script nicht mit Kommandos umgehen kann, welches Parameter hat.
Tom
wincmd.ini
Code: Select all
menu98=USB-Sync &Doc
cmd98=cd C:\Users\me\Documents\
path98=port://usb/C:/Users/me/Documents/

1. Change Directory (einstellen der 2 TC-Panels)
2. cm_SyncFile
- welches dann am besten gleich mit dem Vergleich und den richtigen Voreinstellungen startet
- Also genauso elegant wie mit dem TC-Sync in eigener Instanz (per Kommandozeile) möglich: totalcmd64.exe /S=S:=...
- aber dieses TC-Sync in eigener Instanz kennt (im Gegensatz zu Netzwerkverbindungen) meine bestehende TC-USB-Port2Port-Verbindung nicht... siehe: Verbindung über USB-Kabel
Deshalb erschien mir die Fernsteuerung per AHK Script vielversprechend, aber da bekomme ich das simple Einstellen der 2 TC-Panel nicht hin - vermutlich weil das AHK Script nicht mit Kommandos umgehen kann, welches Parameter hat.

Tom
Tom - #81178 - 5 User licence - Klugheit, Gerechtigkeit, Tapferkeit und Mäßigung plus Kooperation.