delage32 zum loeschen von alten ordnern
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?
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 94128
Url: https://administrator.de/contentid/94128
Ausgedruckt am: 25.11.2024 um 14:11 Uhr
30 Kommentare
Neuester Kommentar
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
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
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 ;) )
hier löscht er alles was älter als 7 - 11 tage ist.
Gruß Landstreicher
ich lasse bei mir delage vorgweg laufen und anschließend noch mal folgendes
(ich weiss sieht doppelt gemoppelt aus ... hält aber besser ;) )
title loeschen von Ordnern aelter als 7 Tage
@echo off & setlocal
set TDiff=-7
set "gTemp=%Temp%\Gestern.vbs"
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%"
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i
del "%gTemp%"
if exist F:\Sicherung\SAP_DEL_4\%G% echo veraltete Sicherung vom %G% vorhanden. loesche nun %G%
if exist F:\Sicherung\SAP_DEL_4\%G% rd /s /q F:\Sicherung\SAP_DEL_4\%G%
goto :next
:next
@echo off & setlocal
set TDiff=-8
set "gTemp=%Temp%\Gestern.vbs"
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%"
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i
del "%gTemp%"
if exist F:\Sicherung\SAP_DEL_4\%G% echo veraltete Sicherung vom %G% vorhanden. loesche nun %G%
if exist F:\Sicherung\SAP_DEL_4\%G% rd /s /q F:\Sicherung\SAP_DEL_4\%G%
goto :next2
:next2
@echo off & setlocal
set TDiff=-9
set "gTemp=%Temp%\Gestern.vbs"
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%"
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i
del "%gTemp%"
if exist F:\Sicherung\SAP_DEL_4\%G% echo veraltete Sicherung vom %G% vorhanden. loesche nun %G%
if exist F:\Sicherung\SAP_DEL_4\%G% rd /s /q F:\Sicherung\SAP_DEL_4\%G%
goto :next3
:next3
@echo off & setlocal
set TDiff=-10
set "gTemp=%Temp%\Gestern.vbs"
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%"
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i
del "%gTemp%"
if exist F:\Sicherung\SAP_DEL_4\%G% echo veraltete Sicherung vom %G% vorhanden. loesche nun %G%
if exist F:\Sicherung\SAP_DEL_4\%G% rd /s /q F:\Sicherung\SAP_DEL_4\%G%
goto :next4
:next4
@echo off & setlocal
set TDiff=-11
set "gTemp=%Temp%\Gestern.vbs"
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%"
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i
del "%gTemp%"
if exist F:\Sicherung\SAP_DEL_4\%G% echo veraltete Sicherung vom %G% vorhanden. loesche nun %G%
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
@Landstreicher
[OT]
Die Zeilen
brauchst Du nur einmal am Anfang, und
(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 -Tags verwendet, wird vom Batch auch nix kursiv dargestelt.
[OT]
Die Zeilen
@echo off & setlocal
set "gTemp=%Temp%\Gestern.vbs"
echo g=DateAdd("d",%TDiff%,Date):WScript.Echo Right(g,4)^&"-"^&Mid(g,4,2)^&"-"^&Left(g,2)>"%gTemp%"
for /f %%i in ('cscript //nologo "%gTemp%"') do set G=%%i
del "%gTemp%"
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 -Tags verwendet, wird vom Batch auch nix kursiv dargestelt.
@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.
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.
@Landstreicher
Keinerlei Beschwerde meinerseits - ich konnte nur nicht an "Intranet / Extranet(t)" vorbei ...
Grüße
bastla
Keinerlei Beschwerde meinerseits - ich konnte nur nicht an "Intranet / Extranet(t)" vorbei ...
Grüße
bastla
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:
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
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:
@echo off & setlocal
set "Basis=D:\Sicherungsordner"
set Anzahl=5
for /f "skip=%Anzahl%" %%i in ('dir /b /o-n /ad "%Basis%\20*"') do echo rd /s /q "%Basis%\%%i"
pause
Grüße
bastla
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
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
Hallo anfaenger500 und willkommen im Forum!
Ich teile die entsprechende Zeile etwa auf:
Mit %Anzahl% ist hier die Zahl der nicht zu löschenden Ordner gemeint (es sollen also zB immer die letzten 5 bleiben).
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.)
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
Ich teile die entsprechende Zeile etwa auf:
for /f "skip=%Anzahl%" %%i in ...
... ('dir /b /o-n /ad "%Basis%\20*"') do ...
(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"
Grüße
bastla
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
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
Hallo anfaenger500!
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:
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
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
(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
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
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
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
delims=/.
Mit
tokens=1,2,3,4
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%"
Fr 23.01.2009
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
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
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
Hallo anfaenger500!
Deinen Beispielen würde ich als minimales gemeinsames Kriterium den Namensbestandteil "2009" entnehmen - dann:
Wenn Du natürlich genauer einschränken willst (und kannst), dann zB
wobei zusätzlich natürlich auch noch der Dateityp mit angegeben werden kann, also
Zu klären ist immer vorrangig, woran die zu löschenden Dateien möglichst eindeutig zu erkennen sind ...
Grüße
bastla
Deinen Beispielen würde ich als minimales gemeinsames Kriterium den Namensbestandteil "2009" entnehmen - dann:
del *2009*.*
del ??.??.2009-*.*
del ??.??.2009-*.log
Zu klären ist immer vorrangig, woran die zu löschenden Dateien möglichst eindeutig zu erkennen sind ...
Grüße
bastla
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
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
Hallo anfaenger500!
Grüße
bastla
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
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
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
Hallo TxWcA!
Für die "Automatik" kann ein "Geplanter Task" sorgen, und für das Löschen selbst siehe Löschen nach Dateialter (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
Für die "Automatik" kann ein "Geplanter Task" sorgen, und für das Löschen selbst siehe Löschen nach Dateialter (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
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
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
Hallo eduardp!
In einem Batch sind die Laufvariablen von "
Eine Vereinfachung wäre übrigens (nochmals für die Direkteingabe und mit "
Grüße
bastla
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"
bastla
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
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
Hallo eduardp!
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 "
Grüße
bastla
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 Zeilepause
Damit dann, wenn alles soweit passt, tatsächlich gelöscht wird, ist natürlich das "
echo
" zu entfernen.Grüße
bastla
Hallo eduardp!
Was %i (= %%i in einem Batch, und nur dort) bedeutet, hast Du ja in der Ausgabe gesehen - ansonsten: "
Grüße
bastla
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