Fügen Sie dem Explorer eine Erweiterung mit der rechten Maustaste auf eine .WAV-Datei, In MP3 konvertieren hinzu

657
Basj

Ich habe einen Schlüssel in der Windows-Registrierung erstellt:

HKEY_CLASSES_ROOT\*\Shell\Convert to MP3\command 

mit:

"D:\tools\ffmpeg.exe" -i "%1" -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%1.mp3" 

Es funktioniert, außer dass der Dateiname nicht genau das ist, was ich will:

Eingabe:, test.wavAusgabe:test.wav.mp3

Ich möchte, dass der Dateiname der Ausgabe ist test.mp3.

Ich habe auch versucht mit:

"D:\tools\ffmpeg.exe" ... "%~n1.mp3" 

wie in dieser Antwort, aber es funktioniert nicht: die Ausgabe ist %~n1.mp3dann!

Wie entferne ich die ursprüngliche Erweiterung wie diese und ersetze sie durch .mp3?

PS: Ich suche nach einer Lösung ohne eine .bat-Datei, sondern nur die Registrierung. Wenn dies nicht möglich ist, können Sie eine Bat-Datei verwenden.

2
Verwenden Sie eine .cmd-Datei und machen Sie es von dort aus. Es sollte dann funktionieren. LPChip vor 6 Jahren 0
@LPChip Gibt es nicht eine Möglichkeit, dies aus einer einzigen Zeile in der Registrierung zu tun? Werden "% ~ n1" -Dinge nur * in der cmd / bat-Datei unterstützt? Basj vor 6 Jahren 0
Soweit ich weiß, ja. LPChip vor 6 Jahren 0

3 Antworten auf die Frage

1
Basj

Hier ist eine Lösung mit einer .BAT-Datei (weiß nicht, ob es ohne eine BAT-Datei möglich ist). Der Schlüssel ist zu verwenden %~n1.mp3, wie hier erklärt .

Datei ____LameMP3me.bat:

"D:\Documents\software\____PORTABLE\____useful-tools\ffmpeg.exe" -i %1 -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%~n1.mp3" 

In HKEY_CLASSES_ROOT\*\Shell\Lame MP3 me!\command:

"D:\Documents\software\____PORTABLE\____useful-tools\____LameMP3me.bat" "%1" 
1
T Nierath

Anstelle von Registry-Hacking können Sie die .batDatei (oder eine .lnkdarauf verweisende Datei) einfach hineinlegen %APPDATA%\Microsoft\Windows\SendTo.

Hier ist eine cygwin + bash-Lösung für das Dateierweiterungsproblem. Dank https://www.tldp.org/LDP/abs/html/string-manipulation.html wird genau eine zusätzliche Codezeile benötigt

Sie würden damit beginnen c:\cygwin\bin\bash.exe <scriptname> <filename>

#!/bin/bash  FILE_NAME="$"  "/cygdrive/d/tools/ffmpeg.exe" -i "\"$1\"" -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "\"$.mp3\""  #keep the console window open, uncomment if not necessary read 
Vielen Dank für Ihre Antwort, aber der Befehl `SendTo` vs. Kontextmenü ändert nichts an dem ursprünglichen Problem (dh, dass die Dateien` test.wav.mp3` anstelle von `test.mp3` sind). Auch die Verwendung von SendTo ist länger, wenn Sie viel tun (Rechtsklick, SendTo anklicken, den richtigen Gegenstand finden) als ein direkter Kontextmenüpunkt. Basj vor 5 Jahren 0
Ich weiß, aber denken Sie daran, dass die Leute über Google auf diesen Ort kommen. Ich wünschte, ich hätte diesen kleinen Trick früher gewusst. T Nierath vor 5 Jahren 0
Bezüglich deines Dateinamensproblems. Ich habe nie Power-Shell gelernt. Was ich also mache, ist cygwin zu installieren und ausführlichere Sachen als Bash-Skript auszuführen. Aber das ist wahrscheinlich keine Lösung für Sie, denke ich. T Nierath vor 5 Jahren 0
@Basj hat die Bash-Lösung für alle Fälle hinzugefügt T Nierath vor 5 Jahren 0
1
guest-vm

Vorausgesetzt, dass ffmpeg.exe in der Pfadvariablen enthalten ist, verwenden Sie

cmd / q / c für %% I in ("% 1") do ffmpeg -i %% I -acodec libmp3lame -vn -ar 44100 -ac 2 -ab 256k "%% ~ nI.mp3" 
als Einlage ohne Fledermausfeile.

Auf Ihre Anfrage gepostet. Als> 2k-Benutzer sollte ich mich auf fortgeschrittenere Befehle konzentrieren und Neulingen die Möglichkeit geben, zu antworten. Daher habe ich zunächst einen Kommentar geschrieben. Wenn Sie mir diese Prämie gewähren, erstatte ich es Ihnen, indem Sie Ihre nächste interessierende Frage sponsern. guest-vm vor 5 Jahren 0