Übersicht über Variablen wie %COMMAND_PATH%
Moderators: Hacker, Stefan2, white
Übersicht über Variablen wie %COMMAND_PATH%
Gibt es in der Hilfe eine Übersicht von Variabeln wie %COMMAND_PATH% usw.?
Hilfe zu %Umgebungsvariablen% und %Parameter
siehe
http://www.ghisler.ch/wikide/index.php/Navigation
>> Umgebungsvariablen
- - - EDIT (danke sqa_wizard)
In der Hilfe ab TC v9.10:
Zur Beschreibung der Umgebungsvariablen öffne die Hilfe (F1-Taste) und [Suche] nach 'Umgebungsvariablen'
http://www.ghisler.ch/wikide/index.php/Navigation
>> Umgebungsvariablen
- - - EDIT (danke sqa_wizard)
In der Hilfe ab TC v9.10:
Zur Beschreibung der Umgebungsvariablen öffne die Hilfe (F1-Taste) und [Suche] nach 'Umgebungsvariablen'
Last edited by Stefan2 on 2018-01-12, 11:46 UTC, edited 1 time in total.
- sqa_wizard
- Power Member
- Posts: 3893
- Joined: 2003-02-06, 11:41 UTC
- Location: Germany
Merci.
Aber beispielsweise finde ich dort nicht was %L oder %T bedeutet.
Eventuell sollte ich etwas ausführen, was ich genau machen will:
ich möchte mir einen Button erzeugen, der mit das im linken Fenster mit der Maus ausgewählte mittels Powershell und 7zip ins rechte kopiert.
Mein Powershell-Script sieht wie folgt aus:
Das Script ist noch sehr rudimentär, aber momentan über ich mich in der PowerShell-Programmierung und werde es erweitern.
Und nun muss ich diesem Script die obigen Parameter übergeben. Im Kommando-Feld des Buttons trage ich mein "ps1"-Skript ein.
Im Parameter-Feld des Buttons:
Aber beispielsweise finde ich dort nicht was %L oder %T bedeutet.
Eventuell sollte ich etwas ausführen, was ich genau machen will:
ich möchte mir einen Button erzeugen, der mit das im linken Fenster mit der Maus ausgewählte mittels Powershell und 7zip ins rechte kopiert.
Mein Powershell-Script sieht wie folgt aus:
Code: Select all
param(
[String] $PathToZipExe,
[String] $Source,
[String] $DirTarget
)
# Check if the last character of the string is a DOT
if ($Source -like '*.') {
$Source = $Source.Substring(0,$Source.Length-1)
}
[String] $ArchiveFileName = ($DirTarget) + "Test_$(get-date -f yyyy-MM-dd_HH-mm).7z"
# Compress with 7zip
& $PathToZipExe a -r -t7z -mx9 -mmt "$ArchiveFileName" "$Source"
Und nun muss ich diesem Script die obigen Parameter übergeben. Im Kommando-Feld des Buttons trage ich mein "ps1"-Skript ein.
Im Parameter-Feld des Buttons:
Code: Select all
-Source '%P%O.%E' -DirTarget '%T' -PathToZipExe 'c:\PortableApps\7-ZipPortable\App\7-Zip64\7z.exe'"
Last edited by pedri on 2018-01-15, 08:25 UTC, edited 5 times in total.
Hilfe zu den TC %Parameter %T %P %L %F
Das ist ja auch etwas anderespedri wrote:Merci.
Aber beispielsweise finde ich dort nicht was %L oder %T bedeutet

Zur Parameter-Beschreibung öffne die Hilfe (F1-Taste) und [Suche] nach 'button' oder 'parameter'
Dann lies unter 'Dialogbox: Konfigurieren - Buttonbar ändern' weiter....
Last edited by Stefan2 on 2018-01-12, 11:57 UTC, edited 1 time in total.
pedri wrote:...
Im Parameter-Feld des Buttons:
Aber es funktioniert nicht. ...Code: Select all
-DirSource %L -DirTarget %T -PathToZipExe "c:\PortableApps\7-ZipPortable\App\7-Zip64\7z.exe"
Zum Einsatz mit der PoSh verdreifache die Anführungszeichen """...""",
oder verwende einfache Anführungszeichen '...' solange du hier keine PoSh '$...'-Variablen quoten möchtest.
Außerdem wird dein "-DirSource" nur einen Pfad erwarten ("%P")
und keine Liste ausgewählter Dateien ("%L")
Des weiteren beachte das der "%P"-Parameter einen abschließenden Backslash hat. (wegen "$DirTarget\Test_$(...) )
Beispiel:
Code: Select all
-DirSource '%P' -DirTarget """%T""" -PathToZipExe 'c:\PortableApps\7-ZipPortable\App\7-Zip64\7z.exe'
Code: Select all
-DirSource '%P' -DirTarget '%T' -PathToZipExe 'c:\PortableApps\7-ZipPortable\App\7-Zip64\7z.exe'
Code: Select all
-DirSource """%P""" -DirTarget """%T""" -PathToZipExe """c:\PortableApps\7-ZipPortable\App\7-Zip64\7z.exe"""
Last edited by Stefan2 on 2018-01-12, 12:22 UTC, edited 1 time in total.
Hi Stephan
Mit den dreifachen Anführungszeichen funktioniert es. Leider muss ich das Verzeichnis im linken Fenster ausgewählt, im Sinne von angezeigt haben. Viel schöner pfänd ich es, wenn ich es einfach nur mit der linken Maustaste "markieren" könnte und dann den Button klicken könnte.
Aber irgendwie stimmt dann die Beschreibung in der Hilfe nicht:
Angenommen ich habe folgende Verzeichnisstruktur:
- C
- Test
- Test1
- Temp
Und ich zeige mir im linken Fenster den Ordner "Test1" an.
Dann speicher TC im Verzeichnis "Temp" eine Datei, beispielsweise ABC.txt, mit dem Inhalt "C:\Test\Test1", übergibt aber an die Kommandozeile "C:\Temp\ABC.txt". Sobald die Übergabe an die Kommandozeile erfolgt ist wird die Datei ABC.txt gelöscht.
Da hat sich mein Schreiben mit deiner Korrektur deiner Antwort wohl überschnitten und die Beschreibung in der Hilfe ist doch richtig und ich habe sie auch richtig verstanden.
Mit den dreifachen Anführungszeichen funktioniert es. Leider muss ich das Verzeichnis im linken Fenster ausgewählt, im Sinne von angezeigt haben. Viel schöner pfänd ich es, wenn ich es einfach nur mit der linken Maustaste "markieren" könnte und dann den Button klicken könnte.
Aber irgendwie stimmt dann die Beschreibung in der Hilfe nicht:
Ich lese es so:%L, %l, %F, %f, %D, %d, %WL, %WF, %UL, %UF erzeugt im TEMP-Verzeichnis einen Listendatei mit den Namen der markierten Dateien und Verzeichnisse, und fügt den Namen der Listendatei in die Kommandozeile ein.
Angenommen ich habe folgende Verzeichnisstruktur:
- C
- Test
- Test1
- Temp
Und ich zeige mir im linken Fenster den Ordner "Test1" an.
Dann speicher TC im Verzeichnis "Temp" eine Datei, beispielsweise ABC.txt, mit dem Inhalt "C:\Test\Test1", übergibt aber an die Kommandozeile "C:\Temp\ABC.txt". Sobald die Übergabe an die Kommandozeile erfolgt ist wird die Datei ABC.txt gelöscht.
Da hat sich mein Schreiben mit deiner Korrektur deiner Antwort wohl überschnitten und die Beschreibung in der Hilfe ist doch richtig und ich habe sie auch richtig verstanden.
Um eine ausgewählte Datei (bzw. Ordner) zu übergeben, verwende "%P%O.%E".
(
Eigentlich %P%N oder %P%S, aber hier wird automatisch gequoted, falls Leerzeichen im Pfad sind,
bei "%P%N" bzw. "%P%S" hast du dann eventuell doppelte Quotes im Endergebnis.
Hier müsste du in deinem Skript das Quoting entsprechend behandeln.
Bei "%P%O.%E" setzt du die Quotes explizit selbst und der TC fummelt nicht daran herum.
)
Bei den %F / %L -Parametern wird immer der Pfad zur temporären Liste übergeben.
Du musst dann in deinem Skript diese selbst Zeile-für-Zeile abarbeiten.
(
Eigentlich %P%N oder %P%S, aber hier wird automatisch gequoted, falls Leerzeichen im Pfad sind,
bei "%P%N" bzw. "%P%S" hast du dann eventuell doppelte Quotes im Endergebnis.
Hier müsste du in deinem Skript das Quoting entsprechend behandeln.
Bei "%P%O.%E" setzt du die Quotes explizit selbst und der TC fummelt nicht daran herum.
)
Bei den %F / %L -Parametern wird immer der Pfad zur temporären Liste übergeben.
Du musst dann in deinem Skript diese selbst Zeile-für-Zeile abarbeiten.
Last edited by Stefan2 on 2018-01-12, 12:35 UTC, edited 1 time in total.
Du bist zwar kein Gott, aber irgendwie verwandt mit ihm.Stefan2 wrote:Um eine ausgewählte Datei (bzw. Ordner) zu übergeben, verwende "%S1".
Bei den %F / %L -Parametern wird immer der Pfad zur temporären Liste übergeben.
Du musst dann in deinem Skript diese selbst Zeile-für-Zeile abarbeiten.

Klappt wunderbar!
Meine Lösung sieht jetzt so aus, falls sie jemand nutzen möchte:
Folgende PowerShell-Datei in "<pathToTC>\TotalCommander\MyScripts\ZipFileWithTimeStamp.ps1" angelegt:
Code: Select all
param(
[String] $PathToZipExe,
[String] $Source,
[String] $DirTarget
)
# Check if the last character of the string is a DOT
if ($Source -like '*.') {
$Source = $Source.Substring(0,$Source.Length-1)
}
[String] $ArchiveFileName = ($DirTarget) + "Test_$(get-date -f yyyy-MM-dd_HH-mm).7z"
# Compress with 7zip
& $PathToZipExe a -r -t7z -mx9 -mmt "$ArchiveFileName" "$Source"
Code: Select all
Kommando : PowerShell "%COMMANDER_PATH%\MyScripts\ZipFileWithTimeStamp.ps1"
Parameter: --Source '%P%O.%E' -DirTarget '%T' -PathToZipExe 'c:\PortableApps\7-ZipPortable\App\7-Zip64\7z.exe'
Startpfad:
Icondatei: wcmicons.dll
Icon : 63
ToolTip : 7Zip with TimeStamp
Last edited by pedri on 2018-01-15, 08:27 UTC, edited 3 times in total.
Stefan, noch eine kurze Frage:
Beispielsweise sei folgender Ordner gegeben: "C:\Temp\Test"
Daraus ergibt sich:
%P = "C:\Temp"
%N = "Test"
%E = ""
Dann ergibt doch "%P%O.%E" --> "C:\Temp\Test."
Bei einer Datei verstehe ich, dass es richtig ist. Aber bei einem Ordner nicht, da doch der Punkt noch in den String eingetragen wird.Stefan2 wrote:Um eine ausgewählte Datei (bzw. Ordner) zu übergeben, verwende "%P%O.%E"
Beispielsweise sei folgender Ordner gegeben: "C:\Temp\Test"
Daraus ergibt sich:
%P = "C:\Temp"
%N = "Test"
%E = ""
Dann ergibt doch "%P%O.%E" --> "C:\Temp\Test."
Ja da hast du völlig Recht.
Meistens macht es wohl nicht aus, da das Dateisystem keine Punkte am Ende erlaubt?
Aber um Fehler mit diesem Punkt ganz auszuschließen, müsste man dann doch wieder %P%N oder %P%S verwenden,
und dann die korrekte Quotierung in einem Skript ab arbeiten.
(da der TC einmal quoted und einmal nicht, je nachdem ob Leerzeichen im Pfad sind)
Testen kann man die Parameter übrigens mit einem Button:
[face=timesnewroman]Kommando: cmd /k
Parameter: ?ECHO "%P%O.%E"[/face]
Meistens macht es wohl nicht aus, da das Dateisystem keine Punkte am Ende erlaubt?
Aber um Fehler mit diesem Punkt ganz auszuschließen, müsste man dann doch wieder %P%N oder %P%S verwenden,
und dann die korrekte Quotierung in einem Skript ab arbeiten.
(da der TC einmal quoted und einmal nicht, je nachdem ob Leerzeichen im Pfad sind)
Testen kann man die Parameter übrigens mit einem Button:
[face=timesnewroman]Kommando: cmd /k
Parameter: ?ECHO "%P%O.%E"[/face]