tommylik
Goto Top

Dateien löschen mit wechselnden Ordnernamen

Hallo an alle,

Ich habe folgendes Problem.
Auf meiner Arbeit muß ich an vielen Rechner eine Datensicherung machen.
Dazu müssen vorher einige Dinge bearbeitet werden.
Unter anderem Sicherungsdateien (*.sav) entfernen.
Das habe ich heute ausprobiert und das hat auch funktioniert,
aber das war zufall, weil die Ordnernamen richtig waren.

@echo on
cls
cd /D d:\
if exist D:\Projects\nul goto Auswahl
set P1=D:\Projekte
for /d %%i in ("%P1%\*.*") do set ORDNER=%%~xni  
for /d %%j in ("%P1%\%ORDNER%\sub2\sub3\sub4\") do (   
pushd "%%j"  
del *.sav
popd
)
:Auswahl
set P2=D:\Projects
for /d %%i in ("%P2%\*.*") do set ORDNER=%%~xni  
for /d %%j in ("%P1%\%ORDNER%\sub2\sub3\sub4\") do (   
pushd "%%j"  
del *.sav
popd
)

Das 1. Problem ist der Ordner Projekte Projekt oder Projects
dieser Ordner ist immer verschieden angelegt.
Problem Nr.2 ist der 2.Ordner der ist von Rechner zu Rechner
verschieden. z.B. 5AA30022
Ich denke es ist umständlich geschrieben.
Kann mir jemand von Euch Profis mal unter die Arme greifen.

Vielen Dank schon mal vorab.

Mfg Tom

[Edit Biber] Codeformatierung. [/Edit]

Content-Key: 162997

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

Printed on: April 25, 2024 at 01:04 o'clock

Member: bastla
bastla Mar 20, 2011 at 09:10:17 (UTC)
Goto Top
Hallo Tommylik und willkommen im Forum!

Wenn der Ordner immer unmittelbar unter "D:\" liegt und der Name mit "Proje" beginnt, solltest Du ihn so finden:
@echo off & setlocal
set "Ordner="  
for /d %%i in (D:\Proje*) do set "Ordner=%%i"  
if not defined Ordner echo Ordner nicht gefunden! & goto :eof
echo Projektordner: %Ordner%
Was den zweiten Ordner angeht: Was, außer dass Du dessen Namen nicht kennst, weißt Du über den Ordner, woran ist er zu erkennen?

Soferne es zumindest für "sub3" und "sub4" eindeutige Bezeichnungen gibt, könntest Du es auch so versuchen:
for /f "delims=" %%i in ('dir /s /b /a-d "%Ordner%\*.sav"') do echo "%%~dpi"|findstr /i /e /c:"\\sub3\\sub4\\">nul && echo del "%%i"  
Das "echo" vor dem "del" sorgt dafür, dass Du entspannt testen kannst (hab ich nämlich nicht gemacht face-wink), da so die Löschbefehle nur angezeigt werden ...

Grüße
bastla
Member: Tommylik
Tommylik Mar 20, 2011 at 18:36:26 (UTC)
Goto Top
Hallo bastla,

Vielen Dank für deine schnelle Hilfe.

Also so sehen die Pfade meistens aus:

D:\Archiv\Projekt\1ee10569\wincproj\OS(1)\GraCS\ oder
D:\Archiv\Projekte\1ee10569\wincproj\OS(1)\GraCS\
D:\Archiv\Projects\1ee10569\wincproj\OS(1)\GraCS\
D:\Archiv\Projekt\1ee10725\wincproj\OS(1)\GraCS\
D:\Archiv\Projects\1ee10430\wincproj\OS(1)\GraCS\

Meistens beginnt der Ordner mit 1ee.

Vielen Dank noch mal für deine Hilfe.

Mfg Tom
Member: Tommylik
Tommylik Mar 22, 2011 at 15:31:06 (UTC)
Goto Top
Hallo bastla,

Ich habe das jetzt so gemacht:

for /d %%i in (D:\Proje*) do set Ordner1=%%i
for /d %%j in ("%Ordner1%\1ee*") do set Ordner2=%%j
del %Ordner2%\wincproj\OS(1)\GraCS\*.sav

Bin aber der Meinung das das noch einfacher geht.

Habe das mit deinem Code probiert funktioniert irgenwie nicht.

Mfg Tom
Member: bastla
bastla Mar 22, 2011 at 15:45:55 (UTC)
Goto Top
Hallo Tommylik!
Habe das mit deinem Code probiert funktioniert irgenwie nicht.
Es geht doch nix über aussagekräftige Fehlerbeschreibungen ...
Angepasst an Deine Struktur würde mein Ansatz so aussehen:
@echo off & setlocal
set "Ordner="  
for /d %%i in (D:\Archiv\Proje*) do set "Ordner=%%i"  
if not defined Ordner echo Ordner nicht gefunden! & goto :eof

for /f "delims=" %%i in ('dir /s /b /a-d "%Ordner%\*.sav"') do echo "%%~dpi"|findstr /i /e /c:"\\wincproj\\OS(1)\\GraCS\\">nul && echo del "%%i"  
pause
Grüße
bastla
Member: Tommylik
Tommylik Mar 24, 2011 at 16:10:20 (UTC)
Goto Top
Hallo bastla,

Vielen Dank für deine Hilfe.

Ich bin auch ein Esel. Was ich ich dir da mitgeteilt habe ist falsch.

D:\Archiv\Projekt\1ee10569\wincproj\OS(1)\GraCS\ oder
D:\Archiv\Projekte\1ee10569\wincproj\OS(1)\GraCS\
D:\Archiv\Projects\1ee10569\wincproj\OS(1)\GraCS\
D:\Archiv\Projekt\1ee10725\wincproj\OS(1)\GraCS\
D:\Archiv\Projects\1ee10430\wincproj\OS(1)\GraCS\

So sehen die Pfade richtig aus:

D:\Projekt\1ee10569\wincproj\OS(1)\GraCS\
D:\Projekte\1ee10569\wincproj\OS(1)\GraCS\
D:\Projects\1ee10569\wincproj\OS(1)\GraCS\
D:\Projekt\1ee10725\wincproj\OS(1)\GraCS\
D:\Projects\1ee10430\wincproj\OS(1)\GraCS\

Also der Projekt, Projekte oder Projects - Ordner ist der 1. Ordner.
Der 2. Ordner ist wie du siehst immer veschieden.

Zu deinem Code.

Ich habe ihn halt noch mal aus probiert und es kommt halt zu einem Fehler.
Ich habe einen Screeshot erstellt den du dir hier anschauen kannst.
http://www.pic-upload.de/view-9348587/screenshot.jpg.html
Ich weiß nicht wie ich hier Bilder hochladen kann.
Für deine Hilfe nochmals vielen Dank.

Mfg Tom
Member: bastla
bastla Mar 24, 2011 at 17:16:42 (UTC)
Goto Top
Hallo Tommylik!

Beide "echo" zu entfernen war etwas zuviel des Guten - das unmittelbar nach dem "do" wird gebraucht ...

Grüße
bastla
Member: Tommylik
Tommylik Mar 25, 2011 at 08:45:25 (UTC)
Goto Top
Hallo bastla,

Vielen Dank für deine Hilfe.

Wir kommen der Sache schon näher.

@echo on
cls

set "Ordner="
for /d %%i in (D:\Proje*) do set "Ordner=%%i"
if not defined Ordner echo Ordner nicht gefunden! & goto :eof
for /f "delims=" %%i in ('dir /s /b /a-d "%Ordner%\*.sav"') do echo "%%~dpi"|findstr /i /e /c:"\\wincproj\\OS(1)\\GraCS\\" >nul && del "%%i"
pause

Ich habe den Code aus probiert und im ersten Moment denk man wunderbar.

Ich habe dann mal das echo off auf echo on geändert und noch mal einscreenshot gemacht.
http://www.pic-upload.de/view-9355627/screenshot2.jpg.html

Der Code findet die 6 Dateien, aber sie werden nicht gelöscht.

Habe ich schon wieder was falsch gemacht???

Noch mals vielen Dank für deine Mühe.

Mfg Tom
Member: bastla
bastla Mar 25, 2011 at 09:16:29 (UTC)
Goto Top
Hallo Tommylik!

Sollte so gehen:
for /f "delims=" %%i in ('dir /s /b /a-d "%Ordner%\*.sav"') do echo %%~dpi|findstr /i /e /c:"\\wincproj\\OS(1)\\GraCS\\" >nul && del "%%i"
Grüße
bastla
Member: Tommylik
Tommylik Mar 25, 2011 at 10:06:05 (UTC)
Goto Top
Hallo bastla,

Vielen Dank für deine Hilfe und Mühe.

Auf den letzten Fehler hätte ich auch kommen können.

Funktioniert sehr gut.

Super arbeit von dir.

Mfg Tom