[BATCH] Einzelne Datei suchen und umbenennen

Salomonis

Grünschnabel
Hallo Community,

ich bin schon lange auf der Suche nach einem Batch-Code, der mir eine einzelne Datei unter Windows sucht und wenn er sie gefunden hat, umbenennt. Nur kriege ich das einfach nicht hin.

Bis jetzt habe ich es soweit gebracht:
Code:
rename c:\testdatei.txt /s testdatei1.txt

Testdatei.txt habe ich jetzt nur als Beispiel angeführt. Jedoch findet er die Datei, die er suchen soll, einfach nicht. Wenn ich den Befehl im CMD eingebe, kommt "Syntaxfehler".

Da mir hier einer weiterhelen?

MfG Salo
 

deepthroat

Erfahrenes Mitglied
Hi.

Was meinst du denn mit "suchen"?

Der Syntaxfehler kommt daher, weil du die Syntax nicht eingehalten hast. Der rename Befehl besitzt keine Optionen: es gibt keine /s Option und der Befehl hat genau 2 Parameter. Siehe "help rename".

Gruß
 

Salomonis

Grünschnabel
Naja, mit "suchen" meine ich halt, dass er eine Datei, die in irgendeinem Ordner liegt (wo auch immer) sucht, findet und dann umbenennt.
Die Batch soll also die Festplatte nach dieser einzelnen Datei durchsuchen und wenn gefunden, umbenennen...
 

olqs

Erfahrenes Mitglied
Einen Teil deines Batch Skriptes hast du ja schon gefunden, nämlich rename.

Jetzt brauchst du noch einen Befehl der dir die Datei sucht, z.B. 'dir' und etwas das mit dem Output von 'dir' dann was anfangen kann, z.B. eine for Schleife.

Wenn du die Hilfe zu 'for' und zu 'dir' durchliest, solllte das kein so ein Problem mehr sein.
 

Salomonis

Grünschnabel
Könnt ihr mir nicht einfach schnell den Code sagen? Wenn ich da wieder was finden soll, klapps am Ende eh wieder nicht...
 

olqs

Erfahrenes Mitglied
Aber du wolltest es doch selbst hinbekommen, oder nicht?

Du hast gefragt, ob dir jemand weiterhelfen kann, weil du das nicht hinbekommst. Das haben wir gemacht. Ich seh da jetzt nicht wirklich die Tragik, wenn du deine Versuche hier postest und wir dann in Tipps geben.

Wenn du dann wieder mal ein Batch Skript brauchst, dann hast du schon einige Erfahrung damit und kannst es vielleicht komplett allein.
 

Salomonis

Grünschnabel
Aber ehrlich gesagt bin ich jetzt genau so schlau wie vorher... Wann muss ich denn den Befehl "dir" verwenden? Vielleicht:
Code:
@echo off
dir c:\Test.txt /s
ren test.txt test1.txt
 

olqs

Erfahrenes Mitglied
Ok Schritt für Schritt :)

Du wechselst erstmal in das Stammverzeichnis des Laufwerks, dass du durchsuchen willst
Code:
c:
cd \
oder
Code:
pushd c:\

danach brauchen wir 'dir'. Es soll rekursiv gesucht werden und nur die Dateinamen ausgegeben werden. 'dir /?' sollte da behilflich sein.

Diesen 'dir' Befehl setzen wir dann in ne for Schleife rein. Mal 'help for' und der Abschnitt über 'for /F'. Die Laufvariable muss einem Batch Skript immer mit 2 % Zeichen gekennzeichnet werden. Also %%i nicht %i wie in der Hilfe. Diese bezieht sich nämlich nur auf das ausführen direkt auf der Kommandozeile.

Wenn du mit der for Schleife geschafft hast, dir die Treffer einzeln auszugeben:
Code:
 for /F %%i in (....) do echo %%i

Dann kannst du nen Schritt weitergehen und schaun wie du dein rename Kommando da noch einfügst.
 

crazymischl

Erfahrenes Mitglied
Salomonis hast du die Lösung jetzt ?
Thread bitte als "gelöst" markieren !
Ansonsten:

Code:
@echo off
set dir=c:\ordner\
REM auf jedenfall ein \ am ende dran haben: >nicht< c:\ordner   sondern richtig>> c:\ordner\
set file=datei.txt
REM die zu suchende Datei (dateinamen anpassen, z.b. bild.jpg oder Dokument.doc)
for /r "%dir%" %%i in ("%file%") do if exist %%i (echo %%i >> log.txt && echo. >> log.txt && ren "%%i" "namen%%~xi")
pause

Erzeugt eine log-datei mit dem Pfad zum alten Namen, damit du weißt, wo die neue datei liegt.
Benennt die alte datei in "namen" (musst du noch anpassen) um, behält die dateiendung bei (durch %%~xi wird die datei-endung der original-datei automatisch an die umbenennte drangehängt).
 

Carsten Schermuly

Grünschnabel
Jaaa - ABER -

er sucht ja eine Datei, von der er nicht weiß wo sie liegt,
wüßte er das, brauchte er nicht nach ihr zu suchen,
so jedenfalls habe ich das Gespräch bisher verstanden.

Mein Senf dazu.
Es müßte darum eine echte Suche sein, die rekursiv alle Directories durchläuft, bis gewünschte Datei gefunden wurde oder falls es mehrere Dateien deselben Namens gibt, bis alle gefunden wurden (z. B. mit APPEND).

Auf einem bestimmen Laufwerk suchen
Äh - mit drive.bat
---
C:\
call suche.bat

PAUSE

CLS
---
"call" bewirkt den Wechsel zu suche.bat, das Abarbeiten von suche.bat und das "zurück nach hier gehen" (in drive.bat), nachdem suche.bat abgearbeitet ist. "PAUSE" erlaubt, in aller Ruhe das Suchergebnis durchzugucken, das ja angezeigt wird ehe man durch "hit any key" weitergeht und mit CLS den Vorgang abschließt. Ohne "PAUSE" knallen manche Windows - Versionen das DOS - Fenster ungefragt zu - und dann steht man da, kratzt sich am Koppe und weiß nicht "Ja - äh - was war denn nun eigentlich los?". Darum ist es immer besser, vor CLS nochmal zu PAUSEieren.

suche bat könnte ungefähr so aussehen
---
:NOCHMALC
SUCHSCHLEIFE
wenn gefunden, Pfad anzeigen, Datei umbenennen und GOTO :NOCHMALC
wenn nicht gefunden, GOTO :WECHSELC
:WECHSELC
Auf ein anderes, hier bestimmtes Laufwerk "D:\" wechseln, dann wiederum
:NOCHMALD
SUCHSCHLEIFE
wenn gefunden, Pfad anzeigen, Datei umbenennen und GOTO :NOCHMALD
wenn nicht gefunden, GOTO :WECHSELD
:WECHSELD
usw - nächstes Laufwerk oder im LAN, eben anderer Computer.
---

Fast jede M$ Windows - Version sowie andere Systeme haben jeweils ein anderes DOS (oder gar keins und kommt wie mein Win 2000 nur mit vorgetäuschter DOS - Umgebung), darum funktionieren die Befehle unterschiedlich, resp deren Parameter werden unterschiedlich interpretiert. Die DOS - Commands ähneln sich zwar (Alle DOSen basieren auf dem ersten IBM DOS), das Suchergebnis fällt aber nicht immer gleich aus.

Der beste Weg - nach meinem Dafürhalten ist die Hilfe zum System.
START => Hilfe
Was ich an DOS - Tutorials im Internet fand, ist zwar von den Autoren gut gemeint (ist ja auch ein Akt der Zuvorkommenheit wenn jemand mal kostenlos hilft, gelle? Es ist ja nicht immer der Gedanke an mehr traffic damit verbunden.), es fehlen aber ausführbare Beispiele in den Tutorials.
Wer lernen will, kann unmöglich selbst die Commands und Parameter selber sinnvoll aufeinander abstimmen.

In die Suchmaske der System - Hilfe "DOS" tippen und nur wenig suchen und ausprobieren führt nicht nur zu erhebenden Aha - Erlebnissen, "DNNRWTTR, wieder etwas gelernt!", sondern macht auch tüchtig, sich selbst zu helfen wenn mal kein Forum zur Verfügung steht, in dem man Fragen stellen kann.
 
Zuletzt bearbeitet: