Kommando und Parameter Aufruf

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
Prana
Junior Member
Junior Member
Posts: 20
Joined: 2004-06-05, 16:14 UTC

Kommando und Parameter Aufruf

Post by *Prana »

Hallo

Ich Scripte ein wenig und das klappt auch ganz gut. Meine frage ist aber ... wenn ich im Total Commander etwa 10 Dateien auswähle und über Buttionbar mein Script ausführe übergibt Total Commander 10 Dateien auf einmal. Ist es möglich, dass es nur eine Datei ist aber dafür 10 mal hintereinander? Erst die Erste dann die Zweite dann die Dritte, bis alle Dateien abgearbeitet sind...

Das würde auch einiges erleichtern.
User avatar
milo1012
Power Member
Power Member
Posts: 1158
Joined: 2012-02-02, 19:23 UTC

Post by *milo1012 »

Soweit ich weiß geht das nativ im TC immer noch nicht,
dafür gibt es aber schon seit Jahren das nützliche lst2multi-Programm.

Ansonsten kann man doch auch Skripte schreiben die eine Paramterliste nacheinander abarbeiten, ist halt nur mehr Aufwand.
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6984
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Post by *Horst.Epp »

Christians MakeBat Plugin kann das.
http://www.ghisler.com/dplugins.htm
User avatar
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Bei mehreren Dateien, Eine nach der Anderen bearbeiten

Post by *Stefan2 »

Prana wrote: wenn ich im Total Commander etwa 10 Dateien auswähle
und über Buttionbar mein Script ausführe
übergibt Total Commander 10 Dateien auf einmal.

Ist es möglich, dass es nur eine Datei ist aber dafür 10 mal hintereinander?
Erst die Erste dann die Zweite dann die Dritte, bis alle Dateien abgearbeitet sind...
Das kannst du doch selbst in deinem Skript behandeln.

Welchen TC-Parameter benutzt du beim Aufrufen deines Skripts?

%S fügt die Namen aller markierten Dateien in die Kommandozeile ein
%L 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.

In deinem Skript muss du einfach eine Schleife programmieren, welche die übergebenen Dateien Eine nach der Anderen bearbeitet.

Wenn du mehr über dein Skript verraten möchtest, kann dir hier bestimmt jemand helfen.


- - -

Hier mal als Beispiel eine Batchdatei:

- in die Buttonbar hinzufügen
- als Parameter %L eingeben
- ein paar Dateien auswählen
- auf den Button klicken

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:   path\to\this\batch.cmd
REM Parameter: %L   (see TC help for more)
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 NAME: %%~nxL
    ECHO BASE: %%~nL
    ECHO EXTe: %%~xL
    ECHO File done. Go to next...
ECHO ******************************************
)
ECHO.
ECHO All Done!
PAUSE
Ergebnisbeispiel:
(Ich hatte alle Dateien in "c:\Temp\ArtWeaver\Plug-Ins\File Formats" ausgewählt)

Code: Select all

Found TC's %L-temp file: C:\Users\user\AppData\Local\Temp\CMD3E3.tmp
Start reading  the temp file... and do something for each file:
******************************************
Processing "c:\Temp\ArtWeaver\Plug-Ins\File Formats\GIF.plg"
NAME: GIF.plg
BASE: GIF
EXTe: .plg
File done. Go to next...
******************************************
Processing "c:\Temp\ArtWeaver\Plug-Ins\File Formats\JPEG.plg"
NAME: JPEG.plg
BASE: JPEG
EXTe: .plg
File done. Go to next...
******************************************
Processing "c:\Temp\ArtWeaver\Plug-Ins\File Formats\PCX.plg"
NAME: PCX.plg
BASE: PCX
EXTe: .plg
File done. Go to next...
******************************************
Processing "c:\Temp\ArtWeaver\Plug-Ins\File Formats\PSD.plg"
NAME: PSD.plg
BASE: PSD
EXTe: .plg
File done. Go to next...
******************************************
Processing "c:\Temp\ArtWeaver\Plug-Ins\File Formats\TIFF.plg"
NAME: TIFF.plg
BASE: TIFF
EXTe: .plg
File done. Go to next...
******************************************

All Done!
Drücken Sie eine beliebige Taste . . .


- - -

Or as a Visual Basic Script:

- in die Buttonbar hinzufügen
- als Parameter %L eingeben
- ein paar Dateien auswählen
- auf den Button klicken

Code: Select all

'// Total Commander VBScript "For_Each_Selected_File_Do.vbs" by Stefan, 2014-07-24, v0.01
REM 
REM Use from a Total Commander Button:
REM Command:   path\to\this\VBScript.vbs
REM Parameter: %L   (see TC help for more)
REM 
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSC = CreateObject("WScript.Shell")
strTCtempList = Wscript.arguments.Item(0) ' The TC temp file due to the "%L" parameter
vFileCount = 0
If  FSO.FileExists(strTCtempList) Then
  Set       oTextStream = FSO.OpenTextFile(strTCtempList,1)
  Do Until oTextStream.AtEndOfStream
        vFileCount    = vFileCount + 1
        vFullName     = oTextStream.ReadLine
        Set oFile    = FSO.GetFile(vFullName)
            vName     = FSO.GetFileName(oFile)
            vBase     = FSO.GetBaseName(oFile)
            vExte     = FSO.GetExtensionName(oFile)
            vPath     = oFile.ParentFolder
            PathArray = split(vPath, "")
            vParent   = PathArray( UBound(PathArray) )
            vGrand    = PathArray( UBound(PathArray) -1)
            vGraGran  = PathArray( UBound(PathArray) -2)
            vDrive    = FSO.GetDriveName(oFile)
            vTopFld   = PathArray( 1)
            VTopFld2  = PathArray( 2)
        '----------------------------------------------------------- 
        'TEST OUTPUT:
        ret = MsgBox("Processing file No. " & vFileCount & ":" & vbCRLF _
                  &           vFullName  & vbCRLF              & vbCRLF _
                  & "Path: "     & vbTab & vPath               & vbCRLF _
                  & "Drive: "    & vbTab & vDrive              & vbCRLF _
                  & "TopFld: "   & vbTab & vTopFld             & vbCRLF _
                  & "TopFld2: "  & vbTab & vTopFld2            & vbCRLF _
                  & "Parent: "   & vbTab & vParent             & vbCRLF _
                  & "GrandP: "   & vbTab & vGrand              & vbCRLF _
                  & "File: "     & vbTab & vName               & vbCRLF _
                  & "Base: "     & vbTab & vBase               & vbCRLF _
                  & "Ext: "      & vbTab & vExte               & vbCRLF _
                  , vbOKCancel,"TC VBS Test")
        if (ret=vbCancel) Then WScript.Quit
        '----------------------------------------------------------- 
  Loop
  oTextStream.Close
Else
  WScript.Echo "Input file strTCtempList  not found."
End If
MsgBox "All "&vFileCount&" Done!"
Beispielsausgabe:

Code: Select all

---------------------------
TC VBS Test
---------------------------
Processing file No. 1:
c:\Temp\ArtWeaver\Plug-Ins\File Formats\GIF.plg

Path: 	C:\Temp\ArtWeaver\Plug-Ins\File Formats
Drive: 	C:
TopFld: 	Temp
TopFld2: 	ArtWeaver
Parent: 	File Formats
GrandP: 	Plug-Ins
File: 	GIF.plg
Base: 	GIF
Ext: 	plg
---------------------------
OK   Abbrechen   
---------------------------

Code: Select all

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

---------------------------
All 5 Done!
---------------------------
OK   
---------------------------

.
Post Reply