Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

delage32 zum loeschen von alten ordnern

Frage Entwicklung Batch & Shell

Mitglied: MrIntranet

MrIntranet (Level 1) - Jetzt verbinden

11.08.2008, aktualisiert 18.10.2012, 20425 Aufrufe, 30 Kommentare

hallo,

besteht die möglichkeit, mit delage32 ordner und deren inhalt zu löschen, wenn die ordner vor mehr als 5 tagen angelegt wurden?
delage löscht soweit ich weiss nur die dateien in den ordnern wenn diese älter als 5 tage sind.

wir haben in einem sicherungsordner für jeden tag einen unterordner im format JJJJMMTT.
davon sollen täglich nur die ordner der letzten 5 tage übrig bleiben.

funktioniert das mit delage? mit welchem code?
30 Antworten
Mitglied: Landstreicher
11.08.2008 um 14:40 Uhr
Hallo,

ich habe selber mal delage32 benutzt und konnte feststellen, das er nur die dateien und nicht die ordner lösch ... wie du schon sagst.
allerdings kann man mit:

C:\Programme\delage32\delage32.exe F:\Sicherung\Logs\*.* 7 /recurse /created /rd

einstellen, das er alle files die älter ist wie 7 tage löscht.

ich hoffe du meinst das so ?

PS: wenn du über CMD, delage ohne angabe von parametern startest, bekommst du folgende hilfe:
DelAge32, ver. 1.8 (c) 2003-2005, Horst Schaeffer
Deletes files (path with file pattern) by age (number of days)
Syntax:
DelAge32 filespec days [/includeRO] [/includeH] [/recurse] [/subonly] ..
.. [/preview] [/created] [/modified] [accessed] [/rd] [/move path] [/quiet]

gruß landstreicher
Bitte warten ..
Mitglied: MrIntranet
11.08.2008 um 14:58 Uhr
danke für die schnelle antwort, aber auch mit /recurse /created /rd werden die verzeichnisse nicht gelöscht. im gegenteil, nicht mal mehr die dateien in den unterordnern werden gelöscht.

beispiel:

c:\backup\20080811\unterordner
c:\backup\20080810\unterordner
c:\backup\20080809\unterordner
c:\backup\20080808\unterordner
c:\backup\20080807\unterordner

etc.

es sollen die ordner 200808xx samt inhalt gelöscht werden, wenn älter als 5 tage.
Bitte warten ..
Mitglied: Landstreicher
11.08.2008 um 15:23 Uhr
komisch, was sagt denn das LOG oder schreibst du keines mit ?

ich lasse bei mir delage vorgweg laufen und anschließend noch mal folgendes
(ich weiss sieht doppelt gemoppelt aus ... hält aber besser ;) )

01.
title loeschen von Ordnern aelter als 7 Tage 
02.
@echo off & setlocal 
03.
set TDiff=-7 
04.
set "gTemp=%Temp%\Gestern.vbs" 
05.
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%" 
06.
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i 
07.
del "%gTemp%" 
08.
 
09.
if exist F:\Sicherung\SAP_DEL_4\%G% echo veraltete Sicherung vom %G% vorhanden. loesche nun %G% 
10.
if exist F:\Sicherung\SAP_DEL_4\%G% rd /s /q F:\Sicherung\SAP_DEL_4\%G% 
11.
 
12.
goto :next 
13.
 
14.
:next 
15.
@echo off & setlocal 
16.
set TDiff=-8 
17.
set "gTemp=%Temp%\Gestern.vbs" 
18.
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%" 
19.
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i 
20.
del "%gTemp%" 
21.
 
22.
if exist F:\Sicherung\SAP_DEL_4\%G% echo veraltete Sicherung vom %G% vorhanden. loesche nun %G% 
23.
if exist F:\Sicherung\SAP_DEL_4\%G% rd /s /q F:\Sicherung\SAP_DEL_4\%G% 
24.
 
25.
goto :next2 
26.
 
27.
:next2 
28.
@echo off & setlocal 
29.
set TDiff=-9 
30.
set "gTemp=%Temp%\Gestern.vbs" 
31.
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%" 
32.
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i 
33.
del "%gTemp%" 
34.
 
35.
if exist F:\Sicherung\SAP_DEL_4\%G% echo veraltete Sicherung vom %G% vorhanden. loesche nun %G% 
36.
if exist F:\Sicherung\SAP_DEL_4\%G% rd /s /q F:\Sicherung\SAP_DEL_4\%G% 
37.
 
38.
goto :next3 
39.
 
40.
:next3 
41.
@echo off & setlocal 
42.
set TDiff=-10 
43.
set "gTemp=%Temp%\Gestern.vbs" 
44.
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%" 
45.
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i 
46.
del "%gTemp%" 
47.
 
48.
if exist F:\Sicherung\SAP_DEL_4\%G% echo veraltete Sicherung vom %G% vorhanden. loesche nun %G% 
49.
if exist F:\Sicherung\SAP_DEL_4\%G% rd /s /q F:\Sicherung\SAP_DEL_4\%G% 
50.
 
51.
goto :next4 
52.
 
53.
:next4 
54.
@echo off & setlocal 
55.
set TDiff=-11 
56.
set "gTemp=%Temp%\Gestern.vbs" 
57.
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%" 
58.
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i 
59.
del "%gTemp%" 
60.
 
61.
if exist F:\Sicherung\SAP_DEL_4\%G% echo veraltete Sicherung vom %G% vorhanden. loesche nun %G% 
62.
if exist F:\Sicherung\SAP_DEL_4\%G% rd /s /q F:\Sicherung\SAP_DEL_4\%G%
hier löscht er alles was älter als 7 - 11 tage ist.

Gruß Landstreicher
Bitte warten ..
Mitglied: bastla
11.08.2008 um 15:49 Uhr
@Landstreicher

[OT]
Die Zeilen
01.
@echo off & setlocal 
02.
set "gTemp=%Temp%\Gestern.vbs" 
03.
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%" 
04.
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i
brauchst Du nur einmal am Anfang, und
01.
del "%gTemp%"
(zum Löschen des temporären VBScripts) eigentlich gar nicht, und wenn, dann nur ganz am Ende.

Ebenfalls überflüssig: Ein "goto" zur nächsten Zeile (zB "goto :next") - da die Labels ":next" bis ":next4" auch (anscheinend) von keiner anderen Stelle im Batch angesprungen werden, könntest Du auch diese entsorgen ...
[/OT]

Grüße
bastla

P.S.: Und wenn Du zum Posten <code>-Tags verwendet, wird vom Batch auch nix kursiv dargestelt.
Bitte warten ..
Mitglied: Landstreicher
11.08.2008 um 16:06 Uhr
hehe merci bastla ... ich habs gleich formatiert ;)

ok einige zeilen sind überflüssig, aber es läuft und sollte ja nur als kleiner denkanstoß für MrIntranet dienen
Intranet erinnert mich so an die telekom ... da gibt es sowas auch ;)
Bitte warten ..
Mitglied: bastla
11.08.2008 um 16:24 Uhr
@Landstreicher

Bist Du eigentlich extra nett zu MrIntranet?

Grüße
bastla
Bitte warten ..
Mitglied: Landstreicher
12.08.2008 um 11:33 Uhr
@bastla, nö zu dir war ich ja auch immer nett ;)

wenn ich extra nett bin kann man das auch als sarkasmus bezeichnen, also bin ich nur nett ;)

mich würde nun interessieren ob er es gelöst hat oder nicht und wenn ja wie.
Bitte warten ..
Mitglied: bastla
12.08.2008 um 11:56 Uhr
@Landstreicher

Keinerlei Beschwerde meinerseits - ich konnte nur nicht an "Intranet / Extranet(t)" vorbei ...

Grüße
bastla
Bitte warten ..
Mitglied: MrIntranet
14.08.2008 um 08:08 Uhr
so ihr spassvögel, da bin ich wieder ;)

ehrlich gesagt ist mir der gepostete code etwas zu hoch. was batch-dateien angeht, bin ich insofern fit, dass ich mit xcopy etwas von A nach B kopieren kann

wenn ich mir den code von Landstreicher ansehe: i understand only railstation (ich versteh nur bahnhof).

danke für die hinweise... aber ich hoffe noch auf eine einfache lösung mit weniger code oder ein anderes tool wie delage.
Bitte warten ..
Mitglied: bastla
14.08.2008 um 17:01 Uhr
Hallo MrIntranet!

Nach Deinem Ordnungsruf ein anderer Ansatz: Soferne sich in dem Sicherungsordner tatsächlich nur Unterordner mit dem angegebenen Namensformat befinden, sollte eigentlich folgender Batch genügen:
01.
@echo off & setlocal 
02.
set "Basis=D:\Sicherungsordner" 
03.
set Anzahl=5 
04.
 
05.
for /f "skip=%Anzahl%" %%i in ('dir /b /o-n /ad "%Basis%\20*"') do echo rd /s /q "%Basis%\%%i" 
06.
pause
Das "echo" vor dem Löschbefehl dient dem Testen - so wird nur angezeigt, welche Ordner entsorgt würden. Auch "pause" hat nur während der Testphase eine Daseinsberechtigung.

Grüße
bastla
Bitte warten ..
Mitglied: MrIntranet
15.08.2008 um 14:03 Uhr
wow bastla, machst deinem namen auch alle ehre.

welch ein service, funktioniert einwandfrei. vielen vielen dank!
Bitte warten ..
Mitglied: anfaenger500
22.01.2009 um 19:00 Uhr
Hallo bastla,
mich interessiert das Thema auch und ich bin genauso ein Typ wie MrIntranet der es gerne ohne grossartige Software und Scriptkenntnisse via Batchdatei erledigt haben möchte.

Wenn ich deine Vorgaben bei mir austeste dann bekomme ich die Meldung Dateien nicht gefunden.

Den Basispfad habe ich angepasst.

Könntest du mir vielleicht erklären was die Zeile über pause bedeutet, vielleicht weiss ich dann wo mein Fehler liegt!

Vielen Dank schonmal im voraus.

Grüße
anfaenger500
Bitte warten ..
Mitglied: bastla
22.01.2009 um 19:14 Uhr
Hallo anfaenger500 und willkommen im Forum!

Ich teile die entsprechende Zeile etwa auf:
for /f "skip=%Anzahl%" %%i in ...
Mit %Anzahl% ist hier die Zahl der nicht zu löschenden Ordner gemeint (es sollen also zB immer die letzten 5 bleiben).
... ('dir /b /o-n /ad "%Basis%\20*"') do ...
der "dir"-Befehl listet in dieser Schreibweise nur die Namen (/b) aller unterhalb des Ordners "%Basis%" liegenden Ordner (/ad), deren Name mit "20" beginnt, absteigend sortiert (/o-n) auf - dadurch stehen die Ordner mit dem neuesten Datum oben in der Liste und werden durch das "skip" (s. o.) übersprungen und somit durch den weiter unten beschriebenen Befehl (= Rest der Zeile) nicht gelöscht.

(Den "dir"-Befehl (ohne die umgebenden Apostrophe und mit dem tatsächlichen Pfad anstelle von %Basis%) kannst Du testweise auch an der Kommandozeile eingeben, um Dir die komplette Liste der berücksichtigten Unterordneranzeigen zu lassen.)

... echo rd /s /q "%Basis%\%%i"
Dieser Teil der Zeile ist für das rück- (samt aller Unterordner) und umstandslose (da ohne Rückfrage) Löschen der Ordner zuständig (allerdings erst, wenn das "echo" entfernt wird - solange es da ist, wird nur angezeigt, welche Ordner gelöscht würden).

Grüße
bastla
Bitte warten ..
Mitglied: anfaenger500
23.01.2009 um 00:22 Uhr
Hallo bastla,

vielen Dank für die gute Erklärung.
Jetzt weiss ich auch wie das Script aufgebaut ist.

Ich kenne mich nicht aus mit der Batchprogrammierung und würde gern noch etwas darüber lernen.
Kannst du mir sagen, welche Seiten da in Ordnung sind?

Zum Bsp.:
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set CDATE=%%c%%b%%a

Das Ergebnis kenne ich, aber bedeutet das alles.

Vielen Dank.

Grüße
anfaenger500
Bitte warten ..
Mitglied: bastla
23.01.2009, aktualisiert 18.10.2012
Hallo anfaenger500!

Kannst du mir sagen, welche Seiten da in Ordnung sind?
Eigentlich kenne ich nur eine - und da bist Du ja schon ...

Konkret würde ich Dir zu Bibers Workshops (nicht nur für "Runaways" empfehlenswert) raten.

Außerdem gibt es in "Batch & Shell" jede Menge Lösungen für kleinere und größere Aufgabenstellungen, oft (auch hier sei Biber benannt) recht gut und ausführlich erklärt, sodass Du versuchen kannnst, diese nachzuvollziehen - auch für Batch ist "learning by doing" ein guter Ansatz.
Zu Deiner Beispielzeile:
Jede "for"-Schleife solltest Du "von innen" lesen - hier geht es also um den Befehl "date /t". Wenn Du diesen ausführst, erhältst Du (je nach Betriebssystem, Sprache und Einstellungen) etwa folgendes Ergebnis:
23.01.2009
Da Du die Einzelteile des Datums benötigst, muss es zerlegt werden - hier bietet sich natürlich der "." als Trennzeichen ("delimiter") an, während in einem engl. geschriebenen Datum mit "/" getrennt wird - es schadet nicht, beide Möglichkeiten zu berücksichtigen, und auch ev vorhandenes Leerzeichen für das Aufteilen heranzuziehen - daher
delims=/. 
Die durch das Zerlegen entstehenden Teile ("tokens") werden alphabetischen aufsteigenden Variablen (%a, %b, ...) zugewiesen, wobei das Prozentzeichen bei einer Verwendung innerhalb eines Batches (so ist Dein Beispiel oben gemeint) verdoppelt werden muss.

Mit
tokens=1,2,3,4
(könnte auch als "tokens=1-4" geschrieben werden) wird angegeben, dass die ersten 4 Teile (falls es so viele werden sollten) den angesprochenen Variablen zugeordnet werden sollen (wobei in diesem konkreten Fall ein ev 4. Teil = %%d) ohnehin nicht verwendet würde.

Nach dem "do" stehen dann diese Variablen zur Verfügung und werden hier dazu genutzt, in einer neuen Variable %CDATE% das Datum im Format "JJJJMMTT" zusammen zu setzen.

Eine Alternative zu dieser Zeile wäre
set "CDATE=%date:~-4%%date:~-7,2%%date:~-10,2%"
was bedeutet: Entnehme dem Datum die letzten 4 Stellen, danach 2 Stellen ab der Position 7 von hinten (= rechts) gezählt und dann nochmals 2 Stellen ab Position 10 (von hinten). Warum nicht das Ganze von vorne (von links) her? Unter Windows 2000 lautet die Datumsschreibweise oft
Fr 23.01.2009
Mit der gezeigten Variante wird sowohl aus dieser, als auch aus der oben dargestellten Form (von einem XP-System) das richtige Ergebnis ermittelt.

Problematisch wäre in beiden Fällen natürlich das kurze Datumsformat mit nur zweistelliger Jahreszahl - aber mehr dazu findest Du in einem der angesprochen Workshops: Batch for Runaways Part III Datums- und Zeitvariablen im Batch.

Ansonsten noch der allgemeine Hinweis: Mit "date /?", "for /?", "set /?", etc erhältst Du zum jeweilgen Befehl einen Hilfetext.

Na dann: Viel Spaß beim Batchen ...

Grüße
bastla
Bitte warten ..
Mitglied: anfaenger500
23.01.2009 um 09:02 Uhr
Guten Morgen basta,

vielen Dank für deine ausführliche und gute Erklärung.

Anhand der Erklärung komme ich schon ein ganzes Stück weiter.

Grüße
anfaenger500
Bitte warten ..
Mitglied: anfaenger500
25.01.2009 um 19:28 Uhr
Guten Abend hier im Forum,

ich habe eine Frage zum Thema löschen von Dateien und Ordner via Batch.

Unter Angabe von Bsp "20*" kann ich alles löschen was mit 20 anfängt oder "*txt" kann ich alles löschen was eine Textdatei darstellt.
Wie kann ich aber Dateien oder Ordner löschen die eine Kombination aus Datum und Zeit Bsp. "25.01.2009-19.00.00Uhr" oder Zahlen und Wörtern Bsp. "2009_abend" darstellen.

Unter Google oder in der Hilfe habe ich keine passende Antwort gefunden und daher habe ich mich wieder an das Forum gewendet.

Vielen Dank schonmal im voraus.

Grüsse
anfaenger500
Bitte warten ..
Mitglied: bastla
25.01.2009 um 19:39 Uhr
Hallo anfaenger500!

Deinen Beispielen würde ich als minimales gemeinsames Kriterium den Namensbestandteil "2009" entnehmen - dann:
del *2009*.*
Wenn Du natürlich genauer einschränken willst (und kannst), dann zB
del ??.??.2009-*.*
wobei zusätzlich natürlich auch noch der Dateityp mit angegeben werden kann, also
del ??.??.2009-*.log
Zu klären ist immer vorrangig, woran die zu löschenden Dateien möglichst eindeutig zu erkennen sind ...

Grüße
bastla
Bitte warten ..
Mitglied: anfaenger500
25.01.2009 um 19:55 Uhr
Hallo bastla,

meine Zeile bezieht sich auf folgenfden Batchcode:
for /f "skip=%Anzahl%" %%i in ('dir /b /o-n /ad "%Basis%\20*"') do rd /s /q "%Basis%\%%i"

Hier werden ja alle Verzeichnisse die mit 20... anfangen gelöscht.
Bei mir habe ich ein anderes Verzeichnismuster.

Werde dich in Kenntnis setzen was rausgekommen ist.

Vielen Dank schonmal.

Schönen Abend noch.

Grüße
anfaenger500
Bitte warten ..
Mitglied: bastla
25.01.2009 um 20:06 Uhr
Hallo anfaenger500!

Bei mir habe ich ein anderes Verzeichnismuster.
Dann wäre aber der "dir"-Befehl zu überdenken - derzeit wird nach Namen sortiert, es gäbe aber auch die Möglichkeit, das Änderungsdatum als Kriterium zu verwenden - um dann die jüngsten Ordner zu behalten, müsstest Du "/o-n" durch "/o-d" ersetzen. Mit einem zusätzlichen "/tc" könntest Du anstelle des Änderungsdatums auch das Erstellungsdatum berücksichtigen.

Grüße
bastla
Bitte warten ..
Mitglied: timmix
18.03.2009 um 14:30 Uhr
Was du suchst ist der Paramter: /rd

z.B.:
delage32.exe <PfadZuDeinemOrdner>\*.* 5 /recurse /rd
Bitte warten ..
Mitglied: eduardp
12.02.2010 um 19:37 Uhr
Nabend,

Kennt immer noch niemand ein Tool mit GUI das so mächtig ist um die o.g Anforderungen zu erfüllen?

- löschen von Dateien und Ordner nach einer bestimmten Zeit und der möglichkeitn ein Protokoll mit den gelöschten Dateien zu erstellen.

Gruß
Bitte warten ..
Mitglied: TxWcA
26.08.2010 um 08:49 Uhr
Hallo

Wie lösche ich folgende Dateien die älter sind als 30 Tage.

Es gibt logs welche nach 30 Tagen automatisch gelöscht werden können.

Diese Logs liegen C:\Archiv\Log_A und in C:\Archiv\Log_B

In diesen Ordnern möchte ich dass die Logs welche älter als 30 Tage sind automatisch täglich gelöscht werden.
Wer kann mir da helfen ?

Danke
es grüßt
txwca
Bitte warten ..
Mitglied: bastla
27.08.2010, aktualisiert 18.10.2012
Hallo TxWcA!

Für die "Automatik" kann ein "Geplanter Task" sorgen, und für das Löschen selbst siehe diesen Kommentar bzw diesen (vor kurzem etwas überraschend - da schon seit Jahren hier im Forum "delage32" als "Quasi"-Standard für derartige Aufgabenstellungen genannt wird - geposteten) Tipp ...

Grüße
bastla
Bitte warten ..
Mitglied: eduardp
28.10.2010 um 09:52 Uhr
Hallo Leute.

Ich habe den Beitrag hier gelesen, konnte das aber für meine Bedürfnisse nicht ganz anpassen.
Wir haben in der Firma eine Transferordner der täglich komplett geleert werden soll. Das bedeutet alle Dateien und Ordner sollen gelöscht werden.


Mein "Skript" sieht momentan so aus - funktioniert aber nur wenn ich es manuell im CMD Modus eingebe. Warum?
For /f "tokens=*" %i in ('dir /ad /b "D:\alluser\transfer\!TempOrdner1Tag\*.*"') do rmdir "D:\alluser\transfer\!TempOrdner1Tag\%i" /s /q

Wenn ich diese Zeile in einer CMD-Box eingebe funktioniert alles. Wenn dies allerdings per Task als Batch-Dateie aufgerufen wird nicht. Was mache ich falsch?

Danke für eure Hilfe
Bitte warten ..
Mitglied: bastla
28.10.2010 um 12:17 Uhr
Hallo eduardp!

In einem Batch sind die Laufvariablen von "for"-Schleifen (in Deinem Fall %i) jeweils mit doppelten Prozentzeichen zu schreiben...
Eine Vereinfachung wäre übrigens (nochmals für die Direkteingabe und mit "echo" zum Testen, damit die Löschbefehle nur angezeigt werden):
for /d %i in ("D:\alluser\transfer\!TempOrdner1Tag\*.*") do @echo rd /s /q "%%i"
Grüße
bastla
Bitte warten ..
Mitglied: eduardp
28.10.2010 um 12:58 Uhr
Hallo bastla,

funktioniert leider nicht. Das Fenster kommt kurz hoch und verschwindet wieder. Passiert ist aber nichts.
Wenn ich manuell die Eingabeaufforderung gehe und deine Zeile eingebe funktioniert es. Allerdings muss das "%%i" durch "%i" ersetzt werden.

Warum wird nichts ausgeführt wenn ich ein Doppelklick auf die Batch-Datei mache?
Das Skript läuft auf einem Windows Server 2008 R2 - kann es damit zusammenhängen ?

Gruß,
Eduard
Bitte warten ..
Mitglied: bastla
28.10.2010 um 14:43 Uhr
Hallo eduardp!
Allerdings muss das "%%i" durch "%i" ersetzt werden.
Ja, das war zu gut gemeint ...
Warum wird nichts ausgeführt wenn ich ein Doppelklick auf die Batch-Datei mache?
Soferne Du beide %iauf %%i geändert hast, könnte es eigentlich nur daran liegen, dass nur wenige Ordner betroffen sind und daher der Batch zu schnell durchläuft - Du kannst aber (nur zum Testen) einfach noch eine Zeile
pause
anfügen - dann bleibt das Batchfenster offen, bis Du eine Taste gedrückt hast.

Damit dann, wenn alles soweit passt, tatsächlich gelöscht wird, ist natürlich das "echo" zu entfernen.

Grüße
bastla
Bitte warten ..
Mitglied: eduardp
28.10.2010 um 14:53 Uhr
Hallo Bastla,

vielen Dank für die Hilfe. Es lag in der Tat jeweils am ersten fehlenden "%%i". Nachdem jetzt beide "%%i" lauten funktioniert es.
Was auch immer das %%i zu bedeuten hat und was auch immer der Unterschied zwischen einem und zwei % bedeutet.

Thx!
Bitte warten ..
Mitglied: bastla
28.10.2010 um 16:59 Uhr
Hallo eduardp!
Was auch immer das %%i zu bedeuten hat und was auch immer der Unterschied zwischen einem und zwei % bedeutet.
Da Du Batches auf Server loslässt, finde ich diese Haltung etwas nonchalant ...

Was %i (= %%i in einem Batch, und nur dort) bedeutet, hast Du ja in der Ausgabe gesehen - ansonsten: "for /?"

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...