Zum Inhalt springen

Kommandozeilen-Tools: Alle Dateien oder Dateien in Unterordner bearbeiten


occi23

Empfohlene Beiträge

Hallo,

ich verwende eine Reihe von Kommandozeilenprogrammen, nur leider fehlen mir Kenntnisse im Bereich der Batch-Programmierung. Bisher musste ich immer die Pfade genau angeben. Ich suche nach einer Möglichkeit, wie ich das möglichst variabel gestallten kann:

  • alle Dateien einer bestimmten Dateiendung oder mit bestimmten Zeichen im Rahmen als Input festlegen
  • Dateien der Unterordner (z. B. wieder mit einer bestimmten Dateiendung) als Input festlegen
  • Ausgabedateiname oder Ausgabepfad auf Grundlage der Input-Datei festlegen

Lässt sich sowas auch für einen mit weniger Programmierkenntnissen einstellen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wonach suchst du genau?

Benötigst du jetzt ein paar zeilen Code, der es dir erspart gezielte Eingaben machen zu müssen bei deinen jetzigen Batches?

Sollen neue Batches enstehen, welche die alten ersetzen?

Welche From von Inputs hast du dir denn genau vorgestellt?

Wie soll denn nachher die Aussgabe aussehen? Rename? Copy? Print?

An und für sich ist es schon möglich mit Variablen Eingaben abzufragen um diese später in Befehlsketten wieder nutzen zu können. Aber wenn du von Batch-Programmierung nicht die Kenntnisse hast, wird das wohl nix werden. (Wer nur die grafische Oberfläche kennt und die Kommandozeile meidet, wird mit Batches nur als Nutzer arbeiten können.)

Also entweder jemanden machen lassen, der sich damit auskennt, oder dir die Zeit nehmen sich ein wenig in die Batch-Programmierung einzulesen. Eine gute Quelle wäre z.B.: Wikibook Batch.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du hast schon recht, am besten wäre das Einlesen in die Systematik, nur wenn ich mir scheinbar einfache Optionen zu mir bekannten Befehlen über google suche und ich am Ende eine 3 Seiten-Diskussion bekomme, weil halt diese scheinbar simple Option nicht enthalten ist, bin ich mir nciht sicher ob ich mich für das wenige Kommandozeile das ich nutzen will nicht übernehme.

Ich hatte gehofft, dass es eine einfache Möglichkeit gibt, o.g. Sachen zu machen. Angenommen ich nutze den Lame-Encoder (für mp3) und haben folgende Kommandozeile (keine Ahnung die hinhaut, nur als Bsp.)

lame.exe "c:\lied.wav" "d:\lied.mp3"

Codiert die Datei lied.wav in lied.mp3.

Was ich nun suche:

  • anstelle von Input "lied.wav" etwas setzen, wodurch alle WAV-Dateien im Ordner C: oder alle Dateien mit "lied" im Namen bearbeitet werden. Ein einfachen setzen von ????.wav oder *.wav hat nicht funktioniert
  • das gleiche für Dateien in Unterordner machen; d.h. alle "lied.wav" in allen Unterordnern von C: umrechnen; oder alle WAV-Dateien in allen Unterordnern von C:
  • anstelle von Output "lied.mp3" etwas setzen, das der gleiche Name (evtl. mit Zusatz) wie die Ausgabedatei Verwendung findet; z. B. "lied_neu.mp3"

Soweit ich das beurteilen kann, glaube ich nicht, dass es eine einfache Lösung gibt, die ich für eine Vielzahl von unterschiedlichen Kommandozeilen einsetzen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Für die spezielle Problematik wäre z.B. eine Schleife recht Praktisch.

Ein Beispiel wäre( ungeprüft; nur aus dem Kopf raus geschrieben):

echo off

color 1c

:beginn

setlocal ENABLEDELAYEDEXPANSION

cls

@echo.Multiple Wav zu MP3 Auswahl:

@echo.

set /p Auswahl=Wird nach Dateityp oder Dateiname gesucht? (t/n) 

if %Auswahl%==t goto dattyp

set /p Datei=Welche Dateinamen werden gesucht? (Enter fuer alle)

goto beginn1

:dattyp

set /p Datei=Welcher Dateityp wird gesucht? (z.B. wav) 

:beginn1

set /p Dateiname_neu=Wie soll die Dateinamenerweiterung aussehen? (Enter fuer keine Aenderung) 

:beginn2

set /p Suchpfad=Wo sind die Dateien zu finden? (z.B. C:\temp) 

If not exist %suchpfad% @echo. Die Eingabe war falsch. Das Verzeichnis gibt es nicht. || goto beginn2

:beginn3

set /p Zielpfad=Wo sollen die neuen Datein hin? (z.B. d:\) 

if not exist %zielpfad% @echo. Die Eingabe war falsch. Das Verzeichnis gibt es nicht. || goto beginn3

for /f %%i in ('dir /b %suchpfad% | find "%Datei%"') do (

   lame.exe "%suchpfad%\!!i" "%Zielpfad%\!!i%Dateiname_neu%"

   @echo. !!i wurde bearbeitet.

)

endlocal

set /p nochmal=Noch ein Durchlauf? (y/n)

if %nochmal%==y goto beginn

Aber wie gesagt: Ungetestet. Und wie du siehst ist das nicht "mal so schnell" hingeschrieben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...