Batch: for schleife mit if exist Bedingung

Mitglied: PeterFuch85

PeterFuch85 (Level 1) - Jetzt verbinden

25.11.2020 um 12:07 Uhr, 621 Aufrufe, 7 Kommentare

Hallo zusammen,

ich hänge wieder mal fest mit meinen rudimentären cmd Kenntnissen. Folgende Aufgabe habe ich:

Im Verzeichnis: C:\temp\first_level\101_1\

befinden sich mehrere Folder mit folgenden Namen:

1_001_localizer_20201012

1_002_T1_sag_mpr_Pat2_ND_20201012

1_004_STI_gre_FieldMapp_64_3_4x3_4x3_4_20201012

1_005_STI_gre_FieldMapp_64_3_4x3_4x3_4_20201012

006_STI_gre_FieldMapp


Jetzt benötige ich eine batch Datei die mir bei allen Ordnern die 1_ (Am Anfang) sowie das Datum am Ende wegschneidet. Zusätzlich soll es bei allen Foldern die ein "64_3_..." im Namen haben dieses auch noch gelöscht werden. Die Folder sollen dann all so aussen wie der letzte (006_STI_gre_FieldMapp)

Folgenden Ansatz habe ich bereits geschrieben:

@echo off
Setlocal EnableDelayedExpansion

@for /f "delims=" %%i in ('dir /b C:\temp\first_level\101_1\1*') do


(
if exist C:\temp\first_level\101_1\*64*
(set fname=%%~ni
set fname=!fname:~2,-24!
ren "%%i" "!fname!"
)
ELSE
(
set fname=%%~ni
set fname=!fname:~2,-9!
ren "%%i" "!fname!"
))
endlocal




Leider gibt er mir damit garnichts aus.
Ehrlich gesagt weiss ich auch nicht so recht wie ich eine if Bedingung in einer For Schleife einbringen kann.

Hoffe Ihr könnt mit weiterhelfen.
Mitglied: 146707
146707 (Level 1)
LÖSUNG 25.11.2020, aktualisiert um 12:52 Uhr
Nimm besser gleich die Powershell ...
Batch geht natürlich auch wenn's unbedingt sein muss
Bitte warten ..
Mitglied: PeterFuch85
25.11.2020 um 12:41 Uhr
Danke primal für die schnelle Antwort.

Ich weiss, irgendwann muss ich endlich mal auf Powershell umsteigen. Für den Moment sollte es aber trotzdem leider eine normal batch sein.

Ich habe deinen Ansatz mal getestet. Leider macht es nicht genau das, was ich möchte.
Da es unterschiedliche Verzeichnisnamen gibt, möchte ich bei manchen auch mehr hinten wegschneiden als nur 9 Stellen. Deswegen muss ich mit der if exist Bedingung arbeiten.

Wenn irgendwo im Verzeichnisnamen eine 64 steht, muss ich 24 Stellen wegschneiden, ansonsten nur 9. Bekomme dass mit der for Schleife irgendwie nicht richtig hin.
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
LÖSUNG 25.11.2020, aktualisiert um 12:59 Uhr
Auch kein Problem
Bitte warten ..
Mitglied: PeterFuch85
25.11.2020 um 17:02 Uhr
Perfekt, vielen vielen Dank. Macht genau das, was ich brauche!

Auch wenn ich nicht jede Zeile verstehe, aber kann man sich ja alles anlesen...

Werde auf jeden Fall Deine Lösung nehmen, ist auch eleganter gelöst. Mich würde trotzdem interessieren, was ich in meinem Skript falsch mache, kann man evtl. garkeine "if exist" Bedingung in eine for Schleife einbauen?

Nochmal vielen Dank für Die Hilfe.
Bitte warten ..
Mitglied: PeterFuch85
26.11.2020 um 08:27 Uhr
...ich hätte noch eine kleine Frage zum Skript von primal. Soweit verstehe ich alles und möchte dieses aber mit einer for-Schleife erweitern so dass das Skript vom übergeordneten ORdner alle Unterordner durchläuft. Meine VErzeichnisstruktur sieht in etwas so aus:

C:\temp\first_level --> im Ordner first_level befinden sich Ordner mit den Namen 101_1, 101_2 usw. In diesen Ordnern befinden sich dann eben die Folder die unbenannt werden müssen (s.o.)

Jetzt wollte ich einfach das Skript von Primal nehmen und mit einer zusätzlichen For- Schleife erweitern:

@echo off & setlocal ENABLEDELAYEDEXPANSION


for /d %%i in ("C:\temp\first_level\1*") do

(for /d %%a in ("%%i\1_*") do (
set "newname=%%~na"
echo %%~na|find "64" >nul 2>&1 && (
set "newname=!newname:~2,-24!"
) || (
set "newname=!newname:~2,-9!"
)
ren "%%a" "!newname!"
))


Leider macht er mit diesen Skript wieder garnichts. Lasse ich die erste Zeile mal mit do echo im cmd laufen bekomme ich korrekt die Pfade wieder die ich für die zweite Schleife benötige (C:\temp\first_level\101_1 C:\temp\first_level\101_2)

Vielen Dank schon mal Vorab für die Hilfe
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
LÖSUNG 26.11.2020, aktualisiert um 21:16 Uhr
Einfach mal for /? in die Konsole eintippen und davon etwas lernen, statt immer nur rum zu probieren und auf die F.... zu fallen.

Da das hier jetzt mal wieder anfängt auf Basics-Fragen aus zu ufern, bitte Thread dann als gelöst markieren und für neue Sachen bitte einen neuen Fred aufmachen. Danke!

Gute Lektüre für dunkle Winterabende
https://administrator.de/tutorial/tutorial-for-schleife-155681.html
Bitte warten ..
Mitglied: PeterFuch85
26.11.2020 um 17:52 Uhr
Super, nochmal vielen Dank. Funktioniert leider noch nicht (er macht überhaupt keine Änderungen an den Ordnernamen), werde es aber mal in Ruhe Zeile für Zeile durchgehen. Vielleicht habe ich auch etwas in der Verzeichnisstruktur falsch angegeben...

Das Hauptproblem ist auf jeden fall gelöst...jetzt werde ich mich mal intensiver ins Thema einlesen.

Nochmals Danke für die Hilfe und die Tipps!!!
Bitte warten ..
Heiß diskutierte Inhalte
Off Topic
Wohin mit alter (Server)Hardware?
insidERRVor 9 StundenFrageOff Topic32 Kommentare

Hallo zusammen. Nachdem unser Leasing nach 5 Jahren ausgelaufen ist, haben wir auf der Arbeit neue Server bekommen. Wieder sind es zwei Hosts für ...

LAN, WAN, Wireless
WLAN Netz über LAN verstärken
PeterM200Vor 1 TagFrageLAN, WAN, Wireless18 Kommentare

Hallo zusammen! Ich bin neu hier, suche schon seit Stunden im Netz nach einer Lösung für mein Problem und habe mich nun entschlossen, hier ...

Windows 10
PDF unterschreiben
ahussainVor 1 TagFrageWindows 1012 Kommentare

Hallo allerseits, ich suche (für einen Kunden) nach einem Weg, PDFs zu unterschreiben und dann per Mail zu verschicken. Ich sehe zwei Möglichkeiten: PDF ...

Server-Hardware
RPI4 nicht zugreifbar
gelöst winlinVor 1 TagFrageServer-Hardware27 Kommentare

Hallo Zusammen, hoffe jemand kann mir helfen. Ich habe eine RPI4 gekauft. Habe mir zwei SD Karten genommen und auf einer LibreELEC und auf ...

Router & Routing
LTE oder 5G im Wohnmobil
IT-ProfVor 1 TagFrageRouter & Routing14 Kommentare

Hallo Gemeinde, meine Frau hat ein Wohnmobil gekauft. Ganz viel Technik drin im LKW, aber kein Internet über die Hotspot Funktion des Smartphones hinaus. ...

SAN, NAS, DAS
Privater NAS Server für günstig Geld
gelöst pavelruVor 1 TagFrageSAN, NAS, DAS9 Kommentare

Hallo Zusammen, Wir möchte für privat uns einen Speicher für Daten anlegen. Jetzt ist die Frage, welcher empfohlen wird? Wir möchten folgendes beinhalten: - ...

Soziale Netzwerke
Kein Zugriff auf Facebook-Seite
micsonVor 1 TagFrageSoziale Netzwerke8 Kommentare

Hallo, wir betreiben schon recht lange eine Facebook-Seite. So lange, dass damals für die Erstellung der Seite noch kein Facebook-Profil erforderlich war. Die Seite ...

Windows 10
Windows 10 Anmeldezeitenbeschränkung für Kinder
gelöst bastian23Vor 12 StundenFrageWindows 1014 Kommentare

Hallo, kennt jemand von Euch eine Lösung, um meine Kinder daran zu hintern ihre Notebooks nach z.B. 21 Uhr zu nutzen? Ein einfacher shutdown ...