cmdshepard
Goto Top

Mit Batchdatei Ordnernamen durchsuchen und neue Ordnerstruktur anlegen mit neuem Namen

Hallo,
ich bin tatsächlich kein Programmierer oder in diesem Bereich tätig. Trotzdem versuche ich ein Problem zu lösen.. Ich probiere mal das Ganze grob zu beschreiben.
Ich habe einen Ordner in dem mehrere Unterordner liegen, diese sind mit einer Projektnummer+Projektnamen benannt. Beispielsweise: MA-20-0100__XX .
Nun möchte ich eine Batchdatei erstellen, die die letzten vier Ziffern der Projektnummer überprüft, in diesem Fall also: "0100" und anschließend einen neuen Ornder erstellt der dann wie folgt heißt: MA-20-0100(+1)__XX. Das (+1) steht in diesem Fall dafür, dass die entsprechende Projektnummer bei der Neuerstellung des Ordners um 1 hochgezählt werden soll. Also in Kurzform: Es soll immer ein neuer Projektornder (Struktur) erstellt werden und die Benennung erfolgt auf Basis der höchsten, in dem Verzeichnis vorhandnen Projektnummer und wird um 1 hochgezählt.
Wenn also Ordner: "MA-20-0100__XX" vorhanden ist, soll der nächste Ordner "MA-20-0101__XX" heißen face-smile

Das einzige was ich bisher allerdings zu Stande bringe ist folgendes:

@for /f "tokens=1" %%a in (ordnername.txt) do call :loop %%A

:loop
mkdir %1
cd %1

mkdir MA-20-0100__XX
cd MA-20-0100__XX
mkdir Entwicklung
mkdir Dateien
mkdir viele_tolle_Sachen
mkdir dies_und_das
cd..
cd..
goto :eof

Damit wird mir zwar der neue Ordner erstellt, mir fehlt allerdings die fortlaufende Nummer und ich habe wirklich überhaupt keine Ahnung wie das gehen könnte. Wenn ich das Ganze in google eingebe, finde ich zwar immer einige Sachen, aber nichts was genau auf mein Problem passt. Vielleicht könnt ihr mich ein bisschen verstehen, wenn man wirklich keien Ahnung von der Materie hat, fällt das Abstrahieren wirklich schwer und für einige von euch ist das hier vielleicht eine einfach Übung.. Ich wäre euch jedenfalls für jede Hilfe sehr dankbar face-smile

beste Grüße und einen schönen Tag,
CmDShepard

Content-Key: 580164

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

Printed on: May 1, 2024 at 11:05 o'clock

Mitglied: 144260
144260 Jun 18, 2020 updated at 09:27:50 (UTC)
Goto Top
@echo off &setlocal enabledelayedexpansion
set "root=%~1"  
for /f "tokens=1,2 delims=_" %%a in ('dir /b /ad /on "%root%"') do (  
	set "projectnum=%%a"  
	set "num=1!projectnum:~-4!"  
	set /a "next=!num! + 1"  
	set "next=!projectnum:~0,-4!!next:~1!__%%b"  
)
echo Neuer Ordner : %next%
md "%root%\%next%"  
Member: Meierjo
Meierjo Jun 18, 2020 at 09:26:11 (UTC)
Goto Top
Hallo

Sind denn die Unterordner
Entwicklung
Dateien
viele_tolle_Sachen
dies_und_das

immer die selben?

Dann würde ich einen Vorlageordner MA-20-AAAA__XX mit allen Unterordnern erstellen.
Bei einem neuen Projekt dann diesen Ordner einfach im Explorer kopieren (CTRL+C), und dann umbenennen.
Das wäre meiner Meinung nach die einfachste Lösung

Ein erfahrener "Batcher" kann dir sicherlich den String in Einzelteile zerlegen, und die vierstellige Zahl hochzählen.
Wenn aber in dem Verzeichnis zB nur ein Ordner existiert, bei dem zB ein Bindestrich zwischen MA-20 fehlt, gibt's Probleme

Gruss
Member: CmDShepard
CmDShepard Jun 18, 2020 at 09:41:21 (UTC)
Goto Top
Hi,

das war generell auch immer meine Idee, leider greifen auf diesen Ordner mehrere zu und deshalb sollen die Ordner automatisch benannt werden, damit nur die "XX" durch einen sinnvollen Namen ausgetauscht werden und die Projektnummern immer gleich bleiben.
Member: CmDShepard
CmDShepard Jun 18, 2020 at 09:42:16 (UTC)
Goto Top
Hallo killpid,

vielen Dank für deine schnelle Antwort, leider bin ich (wie gesagt) absolut nicht fit in diesen Dingen, könntest du mir vielleicht kurz erklären, wie ich diesen Befehl in meinen Code mit einbinde? :/ Das wäre wirklich sehr nett face-smile
Mitglied: 144260
144260 Jun 18, 2020 updated at 09:45:56 (UTC)
Goto Top
Lesen, verstehen und dann selbst machen, sonst lernst du ja nüscht, außerdem ist das hier ja kein Machmirdochmalbitte-Forum ...

Viel Erfolg. I'm out.
Member: CmDShepard
CmDShepard Jun 18, 2020 at 09:48:00 (UTC)
Goto Top
Verstehe ich absolut und es war auch nie mein Plan jemanden zu "belästigen" und das komplett für mich zu übernehmen. Da ich allerdings mit einer Codezeile wirklich ncihts anzufangen weiß, habe ich nochmal nachgefragt. Ich werde mich mal mit dem Link von dir beschäftigen und hoffe danach etwas schlauer zu sein. Dankeschön!
Member: CmDShepard
CmDShepard Jun 18, 2020 at 11:29:57 (UTC)
Goto Top
Auch auf die Gefahr hin, dass ich jetzt mit Steinen beworfen und mit Schimpf und Schande überhäuft werde, ich habe mir den Link angesehen und bin nach wie vor kaum klüger. Ich verstehe nicht einmal die Hälfte von dem was da steht, was sicherlich daran liegt, dass ich in einem ganz anderem Bereich tätig bin und mit Programmierung wirklich gar nichts am Hut habe.. Falls noch jemand Lust hat, mir einen Tipp zu geben wäre ich sehr dankbar. Andernfalls kann dieser Beitrag auch geschlossen werden, ich möchte niemandem zur Last fallen oder nerven face-smile
Member: Pjordorf
Pjordorf Jun 18, 2020 at 11:56:00 (UTC)
Goto Top
Hallo,

Zitat von @CmDShepard:
Auch auf die Gefahr hin, dass ich jetzt mit Steinen beworfen und mit Schimpf und Schande überhäuft werde, ich habe mir den Link angesehen und bin nach wie vor kaum klüger. Ich verstehe nicht einmal die Hälfte von dem was da steht, was sicherlich daran liegt, dass ich in einem ganz anderem Bereich tätig bin und mit Programmierung wirklich gar nichts am Hut habe.. Falls noch jemand Lust hat, mir einen Tipp zu geben wäre ich sehr dankbar. Andernfalls kann dieser Beitrag auch geschlossen werden, ich möchte niemandem zur Last fallen oder nerven face-smile
Dann mal hier anfangen:
Windows Batch Grundlagen
https://www.tutorialspoint.com/batch_script/index.htm
https://www.instructables.com/id/Very-Basic-Batch-Tutorial/
http://www.trytoprogram.com/batch-file/
https://o7planning.org/en/11531/batch-scripting-language-tutorial-for-be ...
https://praxistipps.chip.de/batch-online-lernen-3-gute-webseiten_47068
https://en.wikibooks.org/wiki/Windows_Batch_Scripting

Und hiermit findet auch deine Suchmaschine noch millionen mehr....
https://www.google.com/search?q=batch+for+dummys

Gruß,
Peter
Member: CmDShepard
CmDShepard Jun 18, 2020 at 12:32:48 (UTC)
Goto Top
Danke Pjordorf,

Ich habe mich mal ein wenig durchgeklickt, nur wie ich bereits sagte bin ich dafür kein Experte und möchte auch keiner werden. Das von mir oben beschriebene Problem lässt sich ja nicht durch das simple ERstellen eines Ordners lösen, sondern die bereits vorhandenen Ordnernamen müssen von der batch-Datei durchsucht werden, ein Teil daraus erkannt und dann im neuen Ordnernamen ersetzt werden.
Ich arbeite in der Aussenkommunikation und Marketingabteilung und hatte einfach die Hoffnung hier Hilfe für ein konkretes "Problem" zu bekommen, dass man mich hier mit allerlei Lernsites bewirft ist generell zwar nett, hilft mir bei meinem Problem aber nur geringfügig weiter, da ich in der weiteren Zukunft wohl nicht mehr damit zu tun haben werde.
Mir würde es helfen zu dem konkreten Thema ernsthafte Hilfe zu bekommen, wenn dazu allerdings hier niemand bereit ist sondern nur schnippische Antworten kommen (bspw. die erste Antwort von killpid [vor der Bearbeitung]), bringt das weder mir noch euch etwas.
Ich habe nie erwartet, dass mir jemand hier eine Datei schreibt und Stunden seines Lebens für mein Problem opfert, ich war der Ansicht, dass eine solche Batchroutine für einige hier nur eine Fingerübung ist und man mir da tatsächlich hilfreich zur Seite stehen könnte..
Member: Pjordorf
Pjordorf Jun 18, 2020 at 12:48:30 (UTC)
Goto Top
Hallo,

Zitat von @CmDShepard:
Ich habe mich mal ein wenig durchgeklickt, nur wie ich bereits sagte bin ich dafür kein Experte und möchte auch keiner werden.
Dann sage deinem Chef das du die Aufgabe nicht lösen kannst und hilfe brauchst. Er soll schon mal Mittel bereitstellen wenn ein externer BatchGuru das für euch lösen und umsetzen soll.

Ich arbeite in der Aussenkommunikation und Marketingabteilung
und schmückst dich gern mit fremden federn...


Gruß,
Peter
Member: CmDShepard
CmDShepard Jun 18, 2020 at 12:58:49 (UTC)
Goto Top
Alter Verwalter,
ich habe keine Ahnung was euch in diesem Forum so reitet oder was ihr hier für einen Groll gegen eure Mitmenschen schiebt, die sich nicht bis ins Detail mit diesem Kram auskennen! In beinahe jedem Post den ich mir hier anschaue gibt es irgendwelche schnippischen und Pseudointelligenten Kommentare zu ganz normalen Fragen! Es sei denn es ist "einer von euch", mit einem höheren Level, da werden die Leute plötzlich ernst genommen.
Falls hier in der Vergangenheit immer Leute waren die erwartet haben, dass ihr alles für die fertig macht, dann tut es mir leid, aber ich kann da bei Leibe nichts dafür -.-
Wenn mich jemand fragt, wie ein Werkzeug bei Photoshop funktioniert oder man an ein bestimmtes Ergebnis kommt, dann schicke ich ihm auch nicht dutzende "Lernsites", sondern antworte vernünftig auf die Frage, so dass er das auch versteht. Und wenn es zu komplex ist, dann sage ich ihm das auch höflich und mache ihm klar, dass er ohne längeres recherchieren oder bezahlte Hilfe nicht weiter kommen wird, da das nicht so einfach klärbar ist.

Die Idee die hier umgesetzt werden soll ist Abteilungsintern aufgekommen und dass ich mich hier in diesem Forum melde ebenfalls -.- .
Was du oder ihr hier reininterpretieren möchtet bleibt euch überlassen. Nur ist mir echt nicht klar, was an einer simplen Fragestellung so furchtbar ist, dass man es A) gar nicht beantwortet oder B) vernünftig beantwortet oder C) sowas sagt wie: "Das ist weniger simpel als du es dir vorstellst. Nach Möglichkeit stellt ihr Mittel bereit, damit euch jemand so eine Datei schreibt".

Ist es wirklich so schwer nett und höflich anderen Menschen gegenüber aufzutreten, die sich ebenso verhalten? Ich finde das hier ganz furchtbar, was für ein bescheuerter Umgang. -.-
Member: Meierjo
Meierjo Jun 19, 2020 at 14:52:16 (UTC)
Goto Top
Hallo
Probiers mal so:

@echo off &setlocal enabledelayedexpansion
set "root=%~1"  
for /f "tokens=1,2 delims=_" %%a in ('dir /b /ad /on "%root%"') do (  
	set "projectnum=%%a"  
	set "num=1!projectnum:~-4!"  
	set /a "next=!num! + 1"  
	set "next=!projectnum:~0,-4!!next:~1!__%%b"  
)
echo Neuer Ordner : %next%
md "%next%  
md "%next%\Entwicklung  
md "%next%\Dateien  
md "%next%\viele_tolle_Sachen  
md "%next%\dies_und_das  
Erstellt dir die Ordner in dem Verzeichnis, wo du die Batch aufrufst

md "%root%\%next%
md "%root%\%next%\Entwicklung
md "%root%\%next%\Dateien
md "%root%\%next%\viele_tolle_Sachen
md "%root%\%next%\dies_und_das
erstellt dir die Ordner direkt auf im Root (zB C:\ oder D:\)

Der Ordner MA-20-0100__XX, von dem aus "gezählt" werden soll, muss vorhanden sein

Gruss