Mit Batchdatei Ordnernamen durchsuchen und neue Ordnerstruktur anlegen mit neuem Namen

CmDShepard

New member
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

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

beste Grüße und einen schönen Tag,
CmDShepard
 
Du möchtest eine Batch-Datei erstellen, die die Projektnummer aus dem Ordnernamen extrahiert, um 1 erhöht und dann einen neuen Ordner mit der aktualisierten Projektnummer erstellt. Hier ist ein Beispiel-Code, der dir helfen könnte:

@echo off
setlocal enabledelayedexpansion

rem Setze den Pfad zum Verzeichnis
set "dir=C:\Pfad\zum\Verzeichnis"

rem Suche nach dem höchsten Projektnummern-Wert
for /d %%D in ("%dir%\MA-20-*__XX") do (
set "folder=%%~nxD"
set "number=!folder:~7,4!"
if not defined max_number (
set /a "max_number=number"
) else (
if !number! GTR !max_number! set /a "max_number=number"
)
)

rem Erhöhe die Projektnummer um 1
set /a "new_number=max_number + 1"

rem Füge führende Nullen hinzu
set "new_number=0000!new_number!"
set "new_number=!new_number:~-4!"

rem Erstelle den neuen Ordner mit der aktualisierten Projektnummer
mkdir "%dir%\MA-20-!new_number!__XX"

Dieser Code sucht nach dem höchsten Wert der Projektnummer in den Ordnernamen und erhöht ihn um 1. Dann wird ein neuer Ordner mit der aktualisierten Projektnummer erstellt. Du kannst diesen Code an deine Bedürfnisse anpassen.

*********************************************************************************************************************************************************

Dieser Python-Code erfüllt dieselbe Funktion wie der ursprüngliche Batch-Code. Es legt den Pfad zum Verzeichnis fest, sucht nach dem höchsten Projektnummern-Wert, erhöht die Projektnummer um 1, fügt führende Nullen hinzu und erstellt dann den neuen Ordner mit der aktualisierten Projektnummer. Bitte an deine Bedingungen anpassen.

import os

# Setze den Pfad zum Verzeichnis
dir_path = "C:\\Pfad\\zum\\Verzeichnis"

# Suche nach dem höchsten Projektnummern-Wert
max_number = None
for folder_name in os.listdir(dir_path):
if folder_name.startswith("MA-20-") and folder_name.endswith("__XX"):
number = int(folder_name[7:11])

if max_number is None or number > max_number:
max_number = number

# Erhöhe die Projektnummer um 1
new_number = max_number + 1

# Füge führende Nullen hinzu
new_number_str = f"{new_number:04d}"

# Erstelle den neuen Ordner mit der aktualisierten Projektnummer
new_folder_path = os.path.join(dir_path, f"MA-20-{new_number_str}__XX")
os.mkdir(new_folder_path)


lg Geri
 
Ich habe diekt daran gedacht ein bash Skript zu schreiben und es in der WSL laufen zu lassen. (Wundert sich darueber das jemand sogar Batch kann)

Echt schade, dass Python PHP so ziemlich komplett abgeloest hat.


~ noxx
 
Zurück
Oben