Hallo
Ich habe eine Frage zur Übergabe von Pfaden im Starter Menü.
Hier ein Beispiel - ein simpler Batch, der die Argumente wieder gibt:
test.bat
@echo off
echo %*
pause
Diesen habe ich im Starter Menü hinterlegt:
Kommando: ......\test.bat
Parameter: %P%N
Startpfad: %P
Wenn ich jetzt mehrere Dateien markiere, wird mir nur die zuletzt markierte Datei angezeigt....!?
Ich möchte aber gerne alle Argumente (Dateipfade) übergeben.
Was mache ich falsch?
LG,
ninon
Starter Menü - Pfade mehrerer Dateien an ein Skript übergeben
Moderators: white, Hacker, Stefan2
Re: Starter - Pfade übergeben
%P%N ist der Platzhalter für den absoluten Pfad des Objekts unter dem Cursor. Für selektierte Dateien braucht es andere Platzhalter wie %S oder besser %L oder noch besser %WL bzw. %UL.
Ich rate von der Verwendung von %S ab, weil die Kommandozeile auf 8191 Zeichen begrenzt ist und weil mit %S absolute Pfade übergeben werden, wird das sehr schnell zu knapp. Mit einer Listendatei (%L, %UL, %WL) gibt es keine solchen Grenzen.
Grüße
Dalai
Ich rate von der Verwendung von %S ab, weil die Kommandozeile auf 8191 Zeichen begrenzt ist und weil mit %S absolute Pfade übergeben werden, wird das sehr schnell zu knapp. Mit einer Listendatei (%L, %UL, %WL) gibt es keine solchen Grenzen.
Grüße
Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64
Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Re: Starter - Pfade übergeben
Hallo ninon, willkommen im Forum.
Die Liste, welche durch einen der %L -Parameter erzeugt wird, muss dann innerhalb der Batch in einer Schleife abgearbeitet werden.
Dies kann durch eine beliebige Skriptsprache erledigt werden (MS-DOS Batch, JS, PowerShell, AutoHotkey,...)
Davon gibt es bereits einige Beispiele im Forum...
Hier mal eine Batch für einfache Sachen, da du ebenfalls mit einer Batch angefangen hast (heutzutage wäre posh die bessere Wahl):
ForEachFileFrom_L_Do.cmd
Die Batch kann schon bei Umlauten Probleme machen, und man muss ein CHCP Befehl einbauen.
chcp 1252
chcp 65001
Für Infos über die Parameter des TCs, klicke mit rechts auf einen Button und wähle "Ändern", dann rufe dort die Hilfe auf.
Die Liste, welche durch einen der %L -Parameter erzeugt wird, muss dann innerhalb der Batch in einer Schleife abgearbeitet werden.
Dies kann durch eine beliebige Skriptsprache erledigt werden (MS-DOS Batch, JS, PowerShell, AutoHotkey,...)
Davon gibt es bereits einige Beispiele im Forum...
Hier mal eine Batch für einfache Sachen, da du ebenfalls mit einer Batch angefangen hast (heutzutage wäre posh die bessere Wahl):
ForEachFileFrom_L_Do.cmd
Code: Select all
@ECHO OFF
REM Batch script "For_Each_Selected_File_Do.cmd" by Stefan, 2017-07-24, v0.01
REM
REM Use from a Total Commander Button:
REM Command: "D:\rive\path to this\batch.cmd"
REM Parameter: "%L" (((see TC help for more)))
REM Start path:
REM Icon file: cmd.exe (((or wcmicons.dll)))
REM
REM Usage: select a few files and execute the button.
REM
REM
REM THE CODE
ECHO Found TC's %%L-temp file: %1
ECHO Start reading the temp file... and do something for each file:
ECHO ******************************************
for /f "delims=" %%L in ('type %1') do (
REM For Each Line (=File) in temp file DO:
REM (modify this part for your task)
ECHO Processing "%%L"
ECHO Drive: %%~dL
ECHO PATH: %%~dpL
ECHO NAME: %%~nxL
ECHO BASE: %%~nL
ECHO EXTe: %%~xL
ECHO File %%~nxL done. Go to next...
ECHO ******************************************
)
ECHO.
ECHO All Done!
PAUSE
Die Batch kann schon bei Umlauten Probleme machen, und man muss ein CHCP Befehl einbauen.
chcp 1252
chcp 65001
Für Infos über die Parameter des TCs, klicke mit rechts auf einen Button und wähle "Ändern", dann rufe dort die Hilfe auf.