Batch Datei will nicht laufen ?!? (Umbenennen)

Klendathu

Cadet 3rd Year
Registriert
März 2017
Beiträge
45
Hallo Leute,

mal wieder eine Frage zu einer Batch Datei :-) Ich versuche eine Batch Datei zu schreiben, die alle wave dateien mit einer bestimmten endung im namen, wieder auf ihre ursprünglichen dateinamen umbenennt.

als cmd kommando funktioniert der befehl. hier die datei bzw der befehl

for /f "delims=." %a in ('dir /b .') do move /y "%~a-nr.wav" "%~a.wav"
rename.bat


hier die fehlermeldung, die ich erhalte:

https://imgur.com/a/vd28d0u

Vielleicht kann mir jemand sagen, was ich falsch gemacht habe?

Lg Klen






doch wenn ich als als bat oder cmd ausführe, erhalte ich f
 
Die Prozentzeichen müssen beim Einsatz im Batch doppelt geschrieben werden. Ausserdem bitte die Endung .cmd, statt .bat, verwenden. Wird .bat verwendet, dann stellt Cmd für Batches einen reduzierten Befehlssatz bereit.
 
Code:
for /f "delims=." %%a in ('dir /b .') do move /y "%%~a-nr.wav" "%%~a.wav"

@areiland
Unter aktuellen Windows-Versionen dürfte die Endung egal sein, da es die 16-Bit Variante, die command.com nicht mehr gibt. Ich vermute nicht, dass Klendathu noch Windows XP oder ein 32-Bit Windows 7 verwendet.
 
@Andreas_
Meines Wissens macht Cmd immer einen Unterschied zwischen .bat und .cmd, nämlich der dass die Befehlserweiterungen bei .bat nicht genutzt werden. Und das betrifft dann sogar auch mit "For /f" gestaltete Schleifenkonstrukte. Die Nutzung von .cmd schliesst solche möglichen Einschränkungen wenigstens sicher aus.

Abgesehen davon, auch in Windows 10 32Bit kann man NTVDM noch aktivieren und erhält so die 16 Bit Konsole zurück.
 
Du irrst Dich da augenscheinlich. Das Fehlen der Befehlserweiterungen geschah dadurch, das .bat-Dateien mit der command.com und .cmd-Dateien mit cmd.exe ausgeführt wurden. Die dabei auftretenden Unterschiede sind auch dokumentiert. Bei aktuellen 64-Bit-Systemen gibt es aber nur noch die cmd.exe in 32-Bit und 64-Bit-Version. Keine der mir bekannten Referenzen dokumentiert, dass es bei der Ausführung von .bat- oder .cmd-Dateien Unterschiede gibt. Mir selbst sind bei jahrelanger Nutzung keinerlei Unterschiede aufgefallen.

Aber sicherlich hast Du eine Referenz, mit der Du Deine Behauptung belegen kannst.

Auch wenn man unter Windows 10 32-Bit die 16-Bit Unterstützung mit NTVDM aktivieren kann, ist das dann eine virtuelle 16-Bit-Umgebung. Klar, dass da die Unterstützung eingeschränkt ist.
 
Zuletzt bearbeitet:
Ich kenne auch keine Quelle die explizit sagt, dass .cmd anders behandelt wird als .bat. Allerdings hab ich es jetzt im Forenbereich schon sehr oft erlebt, dass Nutzer sich beklagten, weil ihre Batches mit der Endung .bat nicht korrekt ausgeführt wurden. Die blosse Änderung der Dateiendung auf .cmd führte dann prompt zur korrekten Ausführung der Batchdateien. Auf 64 Bit Systemen ab Windows 7!
 
Hi Leute!

Areiland, die vorgeschlagenen Änderungen haben geholfen. Die Daei funktioniert :-)
Ich hätte allerdings noch eine Frage. Die Prozedur funktioniert nur in einem Verzeichnis.
Ist es möglich den Befehlssatz auch auf alle Dateien in Unterverzeichnissen anzuwenden?

Der Befehl entfernt "-nr" in allen Dateinamen und überschreibt den Namen der Originaldatei.
zb: ElvisPresley-nr.wav -> Elvispresley.wav

Lg Klen
 
Hier mein erster, ziemlich ungeschickter, Versuch:

ich habe die cmd datei in alle unterverzeichnisse kopiert und versuche sie auszuführen.

sie wird dort auch hinkopiert, die batch datei wird dort aber leider nicht simultan ausgeführt. ich weiß nicht wieso.

hier der befehlssatz:

For /D %%x in (*) do copy rename8.cmd %%x

@Echo off
for /r /d %%x in ("*") do (
pushd "%%x"
call "rename8.cmd"
popd
)


for /f "delims=." %%a in ('dir /b .') do move /y "%%~a -nr.wav" "%%~a.wav"


rename8.cmd



Vielleicht weiß jemand weiter, bzw, was ich falsch gemacht habe?

Lg Klen
 
Ändere "('dir /b .')" ab in "('dir /b /s .')", dann geht Dir auch die Unterordner durch.
 
Areiland. Nochmal vielen Dank. Es läuft jetzt alles, Vielleicht könntest du mir noch mal unter die Arme greifen, dann muss ich nicht ein neues Thema aufmachen. Ich versuche erst seit kurzem batch-dateien zu schreiben und ich habe da noch einige probleme...

mit folgenden befehlen will ich jeweils 10 mp3s zu einem zusammenführen.
alleinstehend funktioniert der copy /b befehl auch, aber er führt alle im ordner enthaltenen mp3s zu einer einzigen datei zusammen. deswegen will ich nur jeweils 10 dateien zu einer einzigen datei zusammenführen.

hier der befehlssatz:

@Echo off
set counter=0
:loop
for /f "delims=." %%a in ('dir /b /s .') do copy /b "%%~a*.mp3" merge1.mp3
if %counter% equ 10 goto :EOF
set /a counter+=1
echo %counter%
goto loop

es läuft leider in endlosschleife. außerdem scheint immer nur der letzte kopierte mp3 die enddatei auszumachen und nicht 10 zu einer einzelnen datei kopierten mp3s... ich bin ein bisschen ratlos...

Vielen Dank schon mal

Lg Klen
 
Zurück
Oben