maddinson
Goto Top

Datei suchen und umbennen

Mein Ziel ist es, eine gewisse Datei in einer Ordner-Struktur zu finden und diese in einem ganz bestimmten Ordner der Ordnerstruktur zu verschieben und diese auch noch umbenennen.

Nur mal so vorab, ich nutze gerne Batchdateien um einfache Probleme, die in irgendeiner Art und Weise relativ zeitaufwändig sind, schneller zu lösen. Allerdings waren meine Probleme bisher relativ simpel und mein nächstes "Projekt" übertrifft meine momentane Grenze.

Ich versuche einmal detailiert zu beschreiben, was ich tun möchte:

Vorab würde ich gern 2 Parameter setzen: eine 6-stellige Auftragsnummer und eine Projektnummer, die wohl meist als 09/01234 eingetragen wird, aber als 09-01234 behandelt werden soll.

Folgende Dateistruktur:

Ordner\
Büro 1\
Ordner 1\
Ordner 2\
Büro 2\
Ordner 1\
Ordner 2\
Büro 3\
etc.

Ich möchte nun eine Datei finden, die eine bestimmte Projektnummer im Namen hat z.B. 09-01234 und sich in irgendeinem "Ordner 1" befindet. Wenn ich die Datei gefunden habe, soll er diese nehmen und diese innerhalb des Büros in Ordner 2 verschieben. Hier kommt mein erstes Problem, wenn ich die Datei mit "find" finde, dann weiß ich spontan nicht, wie ich diese verschiebe, da ich mit der Ausgabe nicht wirklich viel anfangen kann.

Womit ich einfach nicht zurecht komme ist dann folgendes: Ich habe also dann eine Datei in ein Verzeichnis verschoben die z.B. folgenden Namen hat: Projekt_Nürnberg_09-01234.xls . Nun soll diese Datei in folgendes umbenannt werden: Projekt_Nürnberg_09-01234_123456.xls .

Im optimalfall sollte dann noch ein Wert in eine ganz bestimmte Excelzelle eingetragen werden, aber dazu hab ich vorhin was gesehn, vielleicht krieg ich das selbst hin. Wobei auch ein einfaches öffnen der Datei erstmal vollkommen ausreichen würde.

Folgendes habe ich bereits:

set /P PROJEKTNUMMER=
set /P AUFTRAGSNUMMER=

Hier kommt mein erstes Problem, er soll erstmal überprüfen ob die Projektnummer richtig eingetragen wurde, aber ich komm einfach mit diesem for /F delims nicht wirklich klar. Ich hab mal etwas angefangen aber es noch nicht testen können

for /F "delims=/ tokens=1,2" %%i in %PROJEKTNUMMER% do set /P PROJEKTNUMMER2=%%i/%%j %%i-%%j

Aber wie bereits erwähnt ist dies das kleinere übel, kompliziert für mich wird es erst, wenn ich eine Datei finden muss, diese dann hernehmen und umbennen und auch noch verschieben muss. Ich kann einfach mit der find-Ausgabe nicht wirklich was anfangen, bzw. mein Wissen ist da zu begrenzt um es nutzen zu können.

Kann mir ganz speziell hier in diesem Schritt wer helfen? Für jede Antwort bin ich wirklich sehr dankbar.

Mit freundlichen Grüßen

maddiNson
Kommentar vom Moderator Biber am 13.11.2009 um 16:11:03 Uhr
Datei suchen und umbennen
#rgc = 626
Kann mir ganz speziell hier in diesem Schritt wer helfen?
Hm, das ist aber keine Frage, die Wildfremden gestellt werden sollte. Für Probleme im Schritt gibts spezielle Foren.

Content-Key: 129310

Url: https://administrator.de/contentid/129310

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: bastla
bastla 13.11.2009 um 15:22:30 Uhr
Goto Top
Hallo maddiNson und willkommen im Forum!

Da ich momentan nicht mehr Zeit habe, nur ein erster Ansatz:
@echo off & setlocal
set "Basis=D:\Ordner"  

for /f "delims=" %%i in ('dir /s /b /ad "%Basis%\Ordner1"') do echo %%i --^> %%~dpiOrdner2  
popd
Grüße
bastla
Mitglied: 60730
60730 13.11.2009 um 16:03:08 Uhr
Goto Top
Auch dir eine beliebige nette erste Zeile geschrieben.

Vermeide es, mit Umlauten in Ordnernamen zu arbeiten, denn das wird ein weiterer Stolperstein.

Von daher darfst du den Schnippsel von Bastla nicht in Notepad erzeugen, sondern z.B in Edit

Gruß


umbennen Bibers Counter ....
noch 40 und derjenige welcher - kriegt ganz sicher einen netten Reim vom Beilschen Timo....
@Biber meinst du das Michael Jackson Syndrom Forum?
Mitglied: bastla
bastla 13.11.2009 um 18:38:42 Uhr
Goto Top
@Timo
Von daher darfst du den Schnippsel von Bastla nicht in Notepad erzeugen, sondern z.B in Edit
Wo hast Du einen Umlaut gefunden? Geschrieben hatte ich jedenfalls keinen (und schon gar nicht mit "edit.com") ... face-wink

... aber grundsätzlich hast Du mit den Umlauten natürlich Recht.
@maddiNson
Soferne ich das richtig verstanden habe, würde ich (nicht nur wegen des "/P")
for /F "delims=/ tokens=1,2" %%i in %PROJEKTNUMMER% do set /P PROJEKTNUMMER2=%%i/%%j %%i-%%j
zugunsten von
set "PROJEKTNUMMER2=%PROJEKTNUMMER:/=-%"
verwerfen.

Zum Thema "Verschieben und umbenennen": Mit einem "move" funktioniert das in einem Waschgang ...

Grüße
bastla
Mitglied: Biber
Biber 13.11.2009 um 18:55:04 Uhr
Goto Top
Moin bastla,

<OT>
Zitat von @bastla:
@Timo
Wo hast Du einen Umlaut gefunden?
In "Büro 3" ist einer versteckt, aber ich sag jetzt nicht wo....

Zum Thema "Verschieben und umbenennen": Mit einem "move" funktioniert das in einem Waschgang ...
"Move" ist auch nicht ganz so tippfehlerträchtig....
</OT>

Grüße und schönes Wochenende
Biber
Mitglied: 60730
60730 13.11.2009 um 19:00:19 Uhr
Goto Top
Zitat von @bastla:
@Timo
Wo hast Du einen Umlaut gefunden? Geschrieben hatte ich jedenfalls keinen (und schon gar nicht mit "edit.com") ... face-wink

@bastla:
Du nicht, aber das wird wohl "irgendjemand" an seine Ordnerstruktur
Ordner\
Büro 1\
usw anpassen....

btw:
edlin gibts ja auch noch unter XP

Grüße zurück face-wink

Edit - nicht edlin oder Notepad
@Biber - du linksüberholer.... face-wink
Edit²
@bastla- wer lesen kann ist klar im Vorteil... Advantage BeckerBastla
Mitglied: bastla
bastla 13.11.2009 um 19:32:55 Uhr
Goto Top
@Biber
Mein Hinweis hatte sich (nicht ganz leicht erkennbar face-wink) auf
Von daher darfst du den Schnippsel von Bastla nicht in Notepad erzeugen, sondern z.B in Edit
bezogen - und ich bin mir weiterhin sicher, dass in meinem "Schnipsel" kein Umlaut vorkommt (und auch, dass im Zweifelsfall mit diesem Code Datei-/Ordnernamen mit Umlauten wunschgemäß verarbeitet werden).

@Timo
Du nicht, aber das wird wohl "irgendjemand" an seine Ordnerstruktur ... anpassen.
Wenn diese Ordnerstruktur ernst gemeint war, wird auch nach der Anpassung (da keiner der "Büro"-Ordner unmittelbar angesprochen werden muss) kein Umlaut im Batch benötigt ...

... ansonsten hatte ich Dir ja oben schon Recht gegeben (und sage es auch gerne ausdrücklich: Umlaute in Pfad- und Ordnernamen sind pfui! face-wink)

Schönes Wochenende
bastla

[Edit] War ein langer Tag ... [/Edit]
Mitglied: maddiNson
maddiNson 16.11.2009 um 11:15:53 Uhr
Goto Top
Also ich möchte euch allen für eure Antwort danken. Ich bin schon ein kleines Stückchen weiter.

Das Problem mit dem umbenennen und verschieben funktioniert mit MOVE eigentlich wunderbar. So sieht das momentan aus:

MOVE /-Y %BASIS%\%BUERO%\b_Projektnummer\%DATEINAME%.xls %BASIS%\%BUERO%\%AUFTRAGSART%\%DATEINAME%_%AUFTRAGSNUMMER%.xls

Aber ich habs so lang probiert und das Thema wird hier scheinbar wirklich verpöhnt, aber ich kriege es einfach nicht hin eine Datei zu suchen, die %PROJEKTNUMMER2% im Namen hat und den Namen dieser ohne dem .xls hinten dran in %DATEINAME% abzulegen.


Zu den Ordnern mit Umlaufen. Die Büro-Ordner haben da nunmal das Ü drin und ich kanns nicht ändern. Aber mit den tollen Ordnernamen mit diesem ~ da drin funktionierts wunderbar :d
Mitglied: 60730
60730 16.11.2009 um 11:46:24 Uhr
Goto Top
Servus,

das Thema wird hier scheinbar wirklich verpöhnt,

nein - das ist ein (doppelter) running Gag und das Thema taucht hier einmal die Woche auf und es sollten eigentlich mittlerweile mehr gelöste Themen dazu hier zu finden sein, als Wasser auf dem Mond face-wink
Und der andere "runnning Gag" mit dem umbennen... hört sich für mich nach umrennen an

Aber mit den tollen Ordnernamen mit diesem ~ da drin funktionierts wunderbar :d

ja aber nur unter Umständen - löscht du irgendwann mal den Büro2 Ordner und legst Ihn danach neu an - "stimmt der "tolle ~1 ~2 ~3" Pfad nicht mehr...

Nur als kleine Zwischenfrage - war jetzt noch ein Punkt offen?

Gruß
Mitglied: maddiNson
maddiNson 16.11.2009 um 11:53:53 Uhr
Goto Top
Mal von meiner ganz speziellen Suche-Frage nein.

Wie gesagt, ich kriege es einfach nicht hin und finde zwar viel im Bezug auf das Suchen von Dateien, dennoch hilft mir da nicht wirklich etwas weiter.

Mein letztes Problem ist also eine Datei zu finden und deren Name ohne Endung in %DATEINAME% zu hinterlegen. Dann dürfte, wie ich denke, alles passen.
Mitglied: bastla
bastla 16.11.2009 um 12:41:40 Uhr
Goto Top
Hallo maddiNson!
Mein letztes Problem ist also eine Datei zu finden und deren Name ohne Endung in %DATEINAME% zu hinterlegen.
Je nach Ausgangsordner etwa so:
for /f "delims=" %%i in ('dir /b /s "%BASIS%\%BUERO%\*%PROJEKTNUMMER2%*.*"') do set "DATEINAME=%%~ni"
Grüße
bastla
Mitglied: maddiNson
maddiNson 16.11.2009 um 13:39:41 Uhr
Goto Top
Ich danke vielmals. Ich habs eben getestet und es hat auch funktioniert. Allerdings hätte ich noch gern eine letzte Frage, was macht dieser letzter Befehlt genau? Also ich würde es auch gern verstehen.
Mitglied: 60730
60730 16.11.2009 um 13:43:47 Uhr
Goto Top
Servus,

gib doch einfach mal
set /?
for /?
in einer DosBox ein.

Da wird "eigentlich" alles erklärt face-wink

Gruß
Mitglied: maddiNson
maddiNson 16.11.2009 um 14:05:45 Uhr
Goto Top
Ach ganz so unklug bin ich dann doch nicht. Die einzelnen Befehle sind mir durchaus bewusst bzw. ich hab deren Hilfe schonmal gelesen. Allerdings versteh ich trotzdem nicht was genau in in dieser einen Zeile vor sich geht. Ganz besonders das Ende mit %%~ni, keine Ahnung wo das herkommt und was das genau bedeutet.
Mitglied: 60730
60730 16.11.2009 um 14:09:42 Uhr
Goto Top
Servus,

for /?
/snip

Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
Sie können jetzt folgende Syntax verwenden:

%~I - Expandiert %I und entfernt alle umschließenden Anführungszeichen (").
%~fI - Expandiert %I zu einem vollständigen Dateinamen.
%~dI - Erzeugt nur den Laufwerkbuchstaben von %I.
%~pI - Erzeugt nur den Pfad von %I.
%~nI - Erzeugt nur den Dateinamen von %I.
%~xI - Erzeugt nur die Dateierweiterung von %I.
%~sI - Erzeugter Pfad enthält nur kurze Dateinamen.
%~aI - Erzeugt die Dateiattribute von %I.
%~tI - Erzeugt Datum und Zeit von %I.
%~zI - Erzeugt die Dateigröße von %I.
%~$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
angegebenen Verzeichnisse und expandiert die erste
gefundene Datei %I zu dem vollständigen Dateinamen.

so besser?
Gruß
Mitglied: maddiNson
maddiNson 16.11.2009 um 14:22:56 Uhr
Goto Top
Ja genau das wollte ich noch wissen. Ich danke für alles!