Batch-Script in usercmd.ini umstricken.

German support forum

Moderators: sheep, Hacker, Stefan2, white

Post Reply
mclach
Junior Member
Junior Member
Posts: 28
Joined: 2004-08-20, 17:45 UTC

Batch-Script in usercmd.ini umstricken.

Post by *mclach »

Hallo,

hab schon gesucht, aber leider nicht das passende gefunden.
Ich habe eine Batch-Datei, die alle Dateien des aktuellen Verzeichnisses in MP3 umwandelt.
Das würde ich gerne in die UserCmd einbauen.
Dazu gibt es in der Batch "%%a", das ich im Parameter-Aufruf irgendwie austauschen muss mit dem, was der TC versteht.
In der Offlinehilfe finde ich dazu nichts, hier im Forum 53 Seiten.
Frage: wie lauten die "Befehle"/"Kommandos" um die markierten Datein zu übergeben?
Hier die Batch und die UserCmd:

Batch (hier im Beispiel auf die m4a-Dateien reduziert):

Code: Select all

FOR %%a IN (*.m4a) DO
 (
"c:\Program Files\VideoLAN\VLC\vlc.exe" 
-I dummy "%%a" --sout=#transcode{vcodec=none,acodec=mp3,ab=168,channels=2,samplerate=44100}:std{access="file",mux=mp3,dst="%%~na.mp3"} 

vlc://quit
)
Wo muss ich in der Parameter-Zeile welche Variable setzten, damit der TC den VLC mit den Parametern für jede selektierte Datei aufruft und diese am besten im Ziel-Verzeichniss ablegt?

Code: Select all

[em_VLC-Batch-2-MP3] 
cmd=    "c:\Program Files\VideoLAN\VLC\vlc.exe"
param=  "-I dummy "%%a" --sout=#transcode{vcodec=none,acodec=mp3,ab=168,channels=2,samplerate=44100}:std{access="file",mux=mp3,dst="%%~na.mp3"}" vlc://quit
path=   
menu=   
button= 
iconic= "1"


User avatar
Dalai
Power Member
Power Member
Posts: 7115
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Re: Batch-Script in usercmd.ini umstricken.

Post by *Dalai »

Grundsätzlich gilt: Entweder kann das gerufene Programm selbst mit mehreren Eingabedateien umgehen, oder man muss für jede dieser Eingabedateien einen Befehl ausführen - mit Schleife und/oder Listendatei.

Ich würde für sowas über eine Listendatei gehen, die man mit %L, %WL oder %UL erhält. Die Schleife muss aber bleiben, weil TC soweit ich weiß keine Möglichkeit bietet, sowas nachzubilden in der Form "Führe für jede Datei Befehl XY aus".

Man kann das in ein em_ Kommando umbauen, aber der Nutzen bleibt für mich sehr gering (wenn überhaupt vorhanden).

Grüße
Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups

User avatar
Horst.Epp
Power Member
Power Member
Posts: 3762
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Re: Batch-Script in usercmd.ini umstricken.

Post by *Horst.Epp »

So eine Batch-Datei baut das MakeBat Packer Plugin von Christian.
https://www.ghisler.com/plugins.htm
Windows 10 Home x64 May 2020 Update, Version 2004 (OS Build 19041.331)
Intel(R) Core(TM) i7-4770 CPU @ 3.40GH, 16GB RAM
TC 9.51 x64 / x86, Everything 1.4.1.985 (x64)

User avatar
Stefan2
Power Member
Power Member
Posts: 2923
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Batch-Script in usercmd.ini umstricken.

Post by *Stefan2 »

mclach wrote:
2020-06-06, 21:15 UTC
Ich habe eine Batch-Datei, die alle Dateien des aktuellen Verzeichnisses in MP3 umwandelt.
Das würde ich gerne in die UserCmd einbauen.

Batch (hier im Beispiel auf die m4a-Dateien reduziert):

Code: Select all

FOR %%a IN (*.m4a) DO
 (
"c:\Program Files\VideoLAN\VLC\vlc.exe" 
-I dummy "%%a" --sout=#transcode{vcodec=none,acodec=mp3,ab=168,channels=2,samplerate=44100}:std{access="file",mux=mp3,dst="%%~na.mp3"} 

vlc://quit
)
Wo muss ich in der Parameter-Zeile welche Variable setzten,
damit der TC den VLC mit den Parametern für jede selektierte Datei aufruft und diese am besten im Ziel-Verzeichniss ablegt?

Code: Select all

[em_VLC-Batch-2-MP3] 
cmd=    "c:\Program Files\VideoLAN\VLC\vlc.exe"
param=  "-I dummy "%%a" --sout=#transcode{vcodec=none,acodec=mp3,ab=168,channels=2,samplerate=44100}:std{access="file",mux=mp3,dst="%%~na.mp3"}" vlc://quit
path=   
menu=   
button= 
iconic= "1"

Im Prinzip geht das wie Folgendermaßen:

Um eine Batchdatei in ein UserCmd zu packen,
verwende im user command die CMD.exe als Interpreter bei "cmd="
und packe deinen aufzurufenden Befehl, inkl. dessen Parameter (vlc.exe .. .. .) in den UserCmd-Parameter (param=).


Damit wird der Parameter mit dem angegebenen Interpreter ausgeführt, in diesem Fall ganz wie eine DOS-Batchdatei.

Beispiel(!):

Code: Select all

[em_VLC-Batch-2-MP3] 
cmd=    cmd /k
param=  FOR %%a IN (*.m4a) DO  ( "c:\Program Files\VideoLAN\VLC\vlc.exe" -I dummy "%%a" --sout=#transcode{vcodec=none,acodec=mp3,ab=168,channels=2,samplerate=44100}:std{access="file",mux=mp3,dst="%%~na.mp3"} )
Für """am besten im Ziel-Verzeichniss ablegt""" musst du den TC-internen Parameter "%T" verwenden >>> dst="%T\%%~na.mp3"

Im offenen Buttondialog klicke auf [Hilfe] um mehr darüber zu erfahren.

Um Befehle auf der Kommandoline zu verknüpfen, verwende das Kaufmannsund "&" >>> & vlc://quit       , bzw. &&.

Da solche DOS-Batch oftmals recht tricky sind und zwischen verschiedenen OS anders reagieren,
und da nicht jeder dein verwendetes Programm zur Verfügung hat, musst du erst selbst noch etwas
experimentieren, und auf die korrekte Syntax und das Quoting achten.

In einer Kommandbox tippe die folgenden Befehle für deren Hilfe:
cmd /?
for /?
oder HELP für eine Übersicht an Befehlen.


Allerdings ist eine externe Batch- /Skriptdatei oftmals trotzdem sinnvoller und vor allem einfacher
umzusetzen, da der zwischengeschaltete Interpreter "TotalCmd" weg fällt. Sind halt zwei Stellen
und zwei Dateien, mit denen man dann arbeiten muss, aber so ist es weniger kompliziert
bzgl. Anführungszeichen und Verschachtellung von Befehlen.



Die TC-internen Parameter wie %P , %T und %L, kannst du auch beim Aufruf einer externen
Batch/Skript übergeben, und dort abfragen und dann verarbeiten:

cmd= "c:\Program Files\VideoLAN\VLC\vlc-batch.CMD"
param= "%P" "%T"

vlc-batch.CMD
SET SRC=%1
SET TRG=%2


HTH? :(

Post Reply