Übersicht über Variablen wie %COMMAND_PATH%

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
pedri
Junior Member
Junior Member
Posts: 5
Joined: 2018-01-12, 09:45 UTC

Übersicht über Variablen wie %COMMAND_PATH%

Post by *pedri »

Gibt es in der Hilfe eine Übersicht von Variabeln wie %COMMAND_PATH% usw.?
User avatar
Stefan2
Power Member
Power Member
Posts: 4132
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Hilfe zu %Umgebungsvariablen% und %Parameter

Post by *Stefan2 »

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'






 
Last edited by Stefan2 on 2018-01-12, 11:46 UTC, edited 1 time in total.
User avatar
sqa_wizard
Power Member
Power Member
Posts: 3854
Joined: 2003-02-06, 11:41 UTC
Location: Germany

Post by *sqa_wizard »

Eine aktuelle Liste findest du in der Hilfe des TC.
Suche im Index nach "Umgebungsvariablen" ...
#5767 Personal license
pedri
Junior Member
Junior Member
Posts: 5
Joined: 2018-01-12, 09:45 UTC

Post by *pedri »

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:

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"
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:

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.
User avatar
Stefan2
Power Member
Power Member
Posts: 4132
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Hilfe zu den TC %Parameter %T %P %L %F

Post by *Stefan2 »

pedri wrote:Merci.

Aber beispielsweise finde ich dort nicht was %L oder %T bedeutet
Das ist ja auch etwas anderes :wink: (die haben nur zufällig ebenfalls ein '%'-Zeichen)



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.
User avatar
Stefan2
Power Member
Power Member
Posts: 4132
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

pedri wrote:...

Im Parameter-Feld des Buttons:

Code: Select all

-DirSource %L -DirTarget %T -PathToZipExe "c:\PortableApps\7-ZipPortable\App\7-Zip64\7z.exe"
Aber es funktioniert nicht. ...

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.
pedri
Junior Member
Junior Member
Posts: 5
Joined: 2018-01-12, 09:45 UTC

Post by *pedri »

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:
%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.
Ich lese es so:

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.
User avatar
Stefan2
Power Member
Power Member
Posts: 4132
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

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.




 
Last edited by Stefan2 on 2018-01-12, 12:35 UTC, edited 1 time in total.
pedri
Junior Member
Junior Member
Posts: 5
Joined: 2018-01-12, 09:45 UTC

Post by *pedri »

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.
 
Du bist zwar kein Gott, aber irgendwie verwandt mit ihm. :-)

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"
In TC kann dann folgende Button erzeugt werden, sodass Ordner gezippt werden können:

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.
pedri
Junior Member
Junior Member
Posts: 5
Joined: 2018-01-12, 09:45 UTC

Post by *pedri »

Stefan, noch eine kurze Frage:
Stefan2 wrote:Um eine ausgewählte Datei (bzw. Ordner) zu übergeben, verwende "%P%O.%E" 
Bei einer Datei verstehe ich, dass es richtig ist. Aber bei einem Ordner nicht, da doch der Punkt noch in den String eingetragen wird.

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."
User avatar
Stefan2
Power Member
Power Member
Posts: 4132
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

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]





 
Post Reply