tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
16
ZUGRIFFE
14068
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Salomonis Salomonis ist offline Grünschnabel
    Registriert seit
    Feb 2008
    Beiträge
    4
    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 :
    1
    
    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
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    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ß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Salomonis Salomonis ist offline Grünschnabel
    Registriert seit
    Feb 2008
    Beiträge
    4
    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...
     

  4. #4
    olqs olqs ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    396
    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.
     

  5. #5
    Salomonis Salomonis ist offline Grünschnabel
    Registriert seit
    Feb 2008
    Beiträge
    4
    Könnt ihr mir nicht einfach schnell den Code sagen? Wenn ich da wieder was finden soll, klapps am Ende eh wieder nicht...
     

  6. #6
    olqs olqs ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    396
    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.
     

  7. #7
    Salomonis Salomonis ist offline Grünschnabel
    Registriert seit
    Feb 2008
    Beiträge
    4
    Aber ehrlich gesagt bin ich jetzt genau so schlau wie vorher... Wann muss ich denn den Befehl "dir" verwenden? Vielleicht:
    Code :
    1
    2
    3
    
    @echo off
    dir c:\Test.txt /s
    ren test.txt test1.txt
     

  8. #8
    olqs olqs ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Beiträge
    396
    Ok Schritt für Schritt

    Du wechselst erstmal in das Stammverzeichnis des Laufwerks, dass du durchsuchen willst
    Code :
    1
    2
    
    c:
    cd \
    oder
    Code :
    1
    
    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 :
    1
    
     for /F %%i in (....) do echo %%i

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

  9. #9
    crazymischl crazymischl ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Beiträge
    118
    Salomonis hast du die Lösung jetzt ?
    Thread bitte als "gelöst" markieren !
    Ansonsten:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    @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).
     
    Mfg,Michi.
    __________________
    Zitat von fluessig: Bitte gelöste Threads als erledigt kennzeichnen und Beiträge bewerten.
    Zitat von cameeel: Nein, ich bin nicht die Signatur, ich putz hier nur.
    Zitat von irgendjemand: Ordnung halten kann jeder, nur ein Genie beherrscht das Chaos !

  10. #10
    Registriert seit
    Mar 2008
    Ort
    Bad Gandersheim (Niedersachsen)
    Beiträge
    8
    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.
    Geändert von Carsten Schermuly (09.03.08 um 07:57 Uhr)
     
    humor is wennste for ihr krachst
    happich fiel tsu lern n, kuckma büdde erste Schritte

  11. #11
    Registriert seit
    Mar 2008
    Ort
    Bad Gandersheim (Niedersachsen)
    Beiträge
    8
    Wer mit seiner Hilfe vergleichen will - bitte -
    Das Folgende ist ein Zitat aus der Hilfe zu M$ Windows 2000 Professional (WinNT 5)

    ---

    Append
    Ermöglicht Programmen das Öffnen von Datendateien in den angegebenen Ordnern, als wären diese Dateien im aktuellen Ordner gespeichert.

    Die angegebenen Ordner werden hinzugefügte Ordner (appended) genannt, da zu öffnende Dateien in ihnen so angesprochen werden können, als ob sie sich im aktuellen Verzeichnis befinden würden.

    append [;] [[Laufwerk:]Pfad[;...]] [[/x:{on | off}] [/path:{on | off}] [/e]

    Parameter

    ;

    Löscht die Liste der hinzugefügten Ordner.

    [[Laufwerk:]Pfad

    Gibt das Laufwerk (falls es nicht das aktuelle ist) und den Ordner an, der dem aktuellen Ordner hinzugefügt werden soll. Sie können mehrere Einträge für [Laufwerk:]Pfad angeben, indem Sie die Einträge durch Semikolons ( voneinander trennen. Wird append allein verwendet, wird die bestehende Liste der hinzugefügten Ordner gelöscht.

    /x:{on | off}

    Gibt an, ob das MS-DOS-Teilsystem bei der Ausführung von Programmen die hinzugefügten Ordner durchsuchen soll. Wenn Sie den Schalter /x:on verwenden, werden auch hinzugefügte Ordner durchsucht. Wenn Sie den Schalter /x:off verwenden, werden hinzugefügte Ordner nicht durchsucht. Sie können /x:on mit /x abkürzen. Wenn Sie /x:on angeben möchten, müssen Sie dies bei der ersten Verwendung von append nach dem Start des Systems durchführen. Danach können Sie zwischen /x:on und /x:off wechseln.

    /path:{on | off}

    Gibt an, ob ein Programm hinzugefügte Ordner nach einer Datendatei durchsuchen soll, wenn bereits ein Pfad im Namen der gesuchten Datei enthalten ist. Die Standardeinstellung ist /path:on.

    /e

    Weist einer Umgebungsvariablen mit dem Namen append die Liste der hinzugefügten Ordner zu. Dieser Parameter kann nur bei der ersten Verwendung von append nach dem Start des Systems angegeben werden. Wenn Sie /e verwenden, können Sie mit dem Befehl set die Liste der hinzugefügten Ordner anzeigen. Weitere Informationen über Umgebungsvariablen erhalten Sie, indem Sie in der Liste Siehe auch auf set klicken.

    Siehe auch
    ---

    "Siehe auch" ist ein Link und führt u. A. zu "APPEND - Beispielen",
    womit man dann ja tatsächlich nur noch auf die Füße fallen kann.
     
    humor is wennste for ihr krachst
    happich fiel tsu lern n, kuckma büdde erste Schritte

  12. #12
    crazymischl crazymischl ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Beiträge
    118
    Zitat Zitat von Carsten Schermuly Beitrag anzeigen
    er sucht ja eine Datei, von der er nicht weiß wo sie liegt,
    Er kann doch einfach in meiner Batch als "ordner" den Laufwerkpfad angeben, und die Batch durchsucht automatisch alle ordner und unterordner auf C:\ :
    Zitat Zitat von crazymischl Beitrag anzeigen
    Code :
    1
    2
    3
    4
    5
    
    @echo off
    set dir=c:\
    set file=datei.txt
    for /r "%dir%" %%i in ("%file%") do if exist %%i (echo %%i >> log.txt && echo. >> log.txt && ren "%%i" "namen%%~xi")
    pause
    PS: Das Thema ist doch schon 1 Monat alt, bitte in Zukunft keine alten Themen mehr "ausgraben", denn wenn der Fragesteller noch eine Frage hätte, würde er sich melden....
     
    Mfg,Michi.
    __________________
    Zitat von fluessig: Bitte gelöste Threads als erledigt kennzeichnen und Beiträge bewerten.
    Zitat von cameeel: Nein, ich bin nicht die Signatur, ich putz hier nur.
    Zitat von irgendjemand: Ordnung halten kann jeder, nur ein Genie beherrscht das Chaos !

  13. #13
    Registriert seit
    Mar 2008
    Ort
    Bad Gandersheim (Niedersachsen)
    Beiträge
    8
    OK - ich hab' nicht auf das Datum geachtet.
    Mir fiel auf, daß das Thema nicht beendet war, z. B. durch einen Satz wie "Ist erledigt, ich habe eine Lösung gefunden" oder Ähnliches.
    Anfänglich sah ich die Möglichkeit zur Lösung mit thefreedictionairy.

    Wie Du siehst, nehme ich noch nicht lange an diesem Forum teil, da ist mir so etwas natürlich nicht geläufig - "bei Antworten auf's Darum achten".
    Darum hoffe ich, daß es nur kleine Fettnäpfchen waren, in die ich trat.

    Zur Entschädigung gibt es einen Blick nach Südafrika, da ist jetzt Herbst.
    Ich war vor 20 Jahren dort (Johannesburg und Swaziland) und einer meiner Söhne war letztes Jahr dort (Kapstadt und östlich davon), von ihm sind die Fotos.
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken [BATCH] Einzelne Datei suchen und umbenennen-dscn4307a.jpg   [BATCH] Einzelne Datei suchen und umbenennen-dscn4308a.jpg  

    [BATCH] Einzelne Datei suchen und umbenennen-dscn4309a.jpg  
     
    humor is wennste for ihr krachst
    happich fiel tsu lern n, kuckma büdde erste Schritte

  14. #14
    Dwza Dwza ist offline Grünschnabel
    Registriert seit
    Jun 2004
    Beiträge
    2
    lange rede kurzer sinn...
    (auch wenns nun schon einige zeit her ist und wahrscheinlich nicht mehr gebraucht wird)

    Code :
    1
    2
    3
    4
    
    @pushd \
    cd\
    dir /S /B /A: H S R A \ | FIND /I "dateiname.xyz"
    @popd


    oder um die batch mit einem parameter (welcher natürlich der dateiname ist) aufzurufen

    Code :
    1
    2
    3
    4
    
    @pushd \
    cd\
    dir /S /B /A: H S R A \ | FIND /I "%1"
    @popd

    viel spaß damit

    ps: sucht alle datein die vorhanden sind. auf allen laufwerken.
    anschließend wechselt es in das verzeichnis in dem was gefunden wurde.
    speichern der information ist ein anderes thema *gg* denke nun kann man das "alte" thema schließen
    Geändert von Dwza (05.01.09 um 00:38 Uhr)
     

  15. #15
    kraftzwerg Tutorials.de Gastzugang
    Auch wenn der Beitrag schon etwas älter ist, so möchte ich ihn dennoch neu auskramen.
    Dies ist der einzige Thread welcher Sinnvolle ideen zum Thema anbietet, auch der eizige Thread welcher mich zu einer Forenanmeldung brachte.

    Ich habe ein ähnliches script geschrieben.
    Es soll mir in einem Netzwerk sämtliche pst dateien finden und in einen Lokalen Ordner kopieren.
    Es funktioniert auch alles wunderbar, nur mit einem Hacken:

    Es wird jeweils nur die erste gefundene Datei kopiert. Im erstellten log Eintrag wiederrum stehen alle gefundenen Dateien.

    Ich bin da schon seid dem Wochenende am verzweifeln warum das kopieren nicht richtig geht.

    Das Problem ist das uns der Exchange weg geflogen ist, und wir schnell die lokalen ost dateien brauchen. Die Datensicherung ist leider auch put

    Am Anfang des Scriptes werden Variablen zur Suche definiert.
    Es wird ein Netzlaufwerk zum suchen verbunden (Dos macht kein UNC) und der Ordner angegeben.

    Das Problem tritt in der for Schleife auf.
    mkdir und echo funktioniert so wie es soll (mehrere durchläufe bei mehreren Dateien) copy kopiert nur den ersten Fund.


    Am Ende des Scriptes wird der zu suchende Rechnername geändert, und das Script erneut durchlaufen.


    Wer Das Script mal testen will, braucht nur die Variablen am Anfang, und die if Schleifen am ende modifizieren

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    
    @echo off
     
    :VARIABLEN
    REM Name des Rechners für den ersten Schleifendurchlauf:
    set "PCNAME=PC1"
     
    REM Zu durchsuchender Ordner
    set "SDIR=\Dokumente und Einstellungen"
     
    REM Zu suchende Datei
    set "FILE=*.ost"
     
    REM Dieses Netzlaufwerk wird zur Suche gemountet
    set "NETDRIVE=y:"
     
    REM Ordner in den das Backup kopiert werden soll
    set "BACKUPPATH=d:\outlooksave\ost"
     
    REM Name des Logfiles
    set "LOGFILE=d:\outlooksave\ost\log.txt"
     
    :BEGIN
     
    cls
    echo "aktueller pc: %PCNAME%"
    ping -n 1 -w 999 %PCNAME%
     
    if %errorlevel% EQU 1 goto NEXT
     
    net use %NETDRIVE% \\%PCNAME%\c$
     
    for /r "%NETDRIVE%%SDIR%" %%i in ("%FILE%") do if exist %%i (echo %PCNAME% >> %LOGFILE% && echo. %%i >> %LOGFILE% && if not exist %BACKUPPATH%\%PCNAME% (mkdir %BACKUPPATH%\%PCNAME%) && copy "%%i" %BACKUPPATH%\%PCNAME%\)
     
     
     
    net use /delete %NETDRIVE%
     
    :NEXT
     
    if "%PCNAME%"=="PC1" (
        set PCNAME=PC2
        goto BEGIN
    )
     
    if "%PCNAME%"=="PC2" (
        set PCNAME=PC3
        goto BEGIN
    )
     
    :EXIT
    echo "--> fertig <--"
    pause


    Hat jemand eine Idee warum das kopieren nicht richtig geht?
    Ich bange, hoffe und Danke
    mfg
    Kraftzwerg
     

Ähnliche Themen

  1. Shell: Einzelne Datei umbenennen
    Von holly123 im Forum Linux & Unix
    Antworten: 13
    Letzter Beitrag: 21.04.08, 12:00
  2. [BATCH] Dateien umbenennen
    Von Chebbes im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 30.04.05, 10:58
  3. Einzelne Datei in Windows-Sicherungsdatei *.bkf suchen
    Von bogomip im Forum Microsoft Windows
    Antworten: 4
    Letzter Beitrag: 08.11.04, 07:16
  4. Batch zum umbenennen
    Von hämma im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 31.03.04, 07:49
  5. Batch - Datei im Netzwerk Suchen
    Von unitet im Forum Sonstige Sprachen
    Antworten: 3
    Letzter Beitrag: 16.10.03, 09:15