42641
Goto Top

Batch datei für Verschieben und Löschen mit Status meldung

Hallo

ich müsste wissen wie ich eine Batch erstelle die von zwei Ordner die Inhalte löscht und mir dann ein Logfile erstellt in dem drin steht das das löschen bzw das verschieben erfolgreich abgeschlossen ist. Ich habe mir gedacht das man es vielleicht so lösen könnte das er irgendwie prüft ob in dem Verzeichnis noch Dateien oder Ordner vorhanden sind und dann je nach dem in die Logfile schreibt Löschen bzw Verschieben erfolgreich beendet oder nicht erfolgreich beendet. Eventuell noch mit Datum und Uhrzeit wann die Letzte löschung oder verschiebung stattgefunden hat.
Kennt sich da jemand aus ? Mit Batch hatte ich noch nie sehr viel zu tun.

MfG

Thomas S.

Content-Key: 50403

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

Printed on: April 16, 2024 at 22:04 o'clock

Member: Shaby
Shaby Feb 01, 2007 at 10:45:11 (UTC)
Goto Top
Hy

Als Batch alternative kann ich dir http://www.2brightsparks.com/downloads.html#freeware empfehlen.

Grüsse Shaby
Mitglied: 42641
42641 Feb 01, 2007 at 11:12:01 (UTC)
Goto Top
Hallo

Danke aber es sollte schon eine ganz normale Batchdatei sein.

MfG

Thomas S.
Member: miniversum
miniversum Feb 01, 2007 at 12:19:52 (UTC)
Goto Top
Dieses ist fürs löschen:
Teste aber erstmal ob es das so macht wie du willst.

@echo off

set ordner=H:\test\\

set Logfile=log.txt

:: Löschen der Dateien und Ordner
:: Kontrolle ob löschen erfolgreich war
set leer=1
FOR /F "delims=" %%i in ('dir /b %ordner%') do if not [%%i] equ set leer=0
:: Ausgabe in Logfile
if %leer% equ 1 (
echo %Date% %Time% %ordner%: Löschen erfolgreich beendet.>>%Logfile%
) else (
echo %Date% %Time% %ordner%: Löschen nicht erfolgreich beendet.>>%Logfile%
)


miniversum
Member: bastla
bastla Feb 01, 2007 at 12:34:18 (UTC)
Goto Top
Hallo tRipleT!

Die folgende Batchdatei löscht nur Dateien (keine Unterverzeichnisse; dafür aber auch schreibgeschützte oder versteckte Dateien) und protokolliert die leeren Verzeichnisse:
@echo off
for %%d in ("D:\Test mit Leerzeichen" "D:\Test2") do (  
	attrib "%%~d\*.*" -r -s -h  
	del /q "%%~d\*.*"  
	dir "%%~d\*.*" /a-d >nul 2>nul || echo %date%_%time:~0,8% %%d leer >> D:\DelLog.txt  
)

Grüße
bastla

[Edit] @ miniversum - Du schon wieder ... face-wink [/Edit]
Mitglied: 42641
42641 Feb 01, 2007 at 12:39:52 (UTC)
Goto Top
Hallo

ja das läuft genau so wie ich es mir vorgestellt habe. Jetzt muss er nur noch aus einem Anderen Ordner nennen wir ihn mal test2 in den ordner daten verschieben. Und hier auch sagen ob es gelaufen ist oder nicht. Wäre das noch eine große änderung ?

Soweit schon mal vielen Dank.

MfG

Thomas S.
Mitglied: 42641
42641 Feb 01, 2007 at 12:43:07 (UTC)
Goto Top
Hi Bastla

auch vielen Dank für deinen Beitrag. Aber die lösung für das löschen von miniversum reicht für meine zwecke völlig aus. Die Datei müsste jetzt nur noch wie oben beschrieben noch um ein zwei kleine Sachen erweitert werden (Verschieben)

MfG

Thomas Sergot
Member: miniversum
miniversum Feb 02, 2007 at 07:31:47 (UTC)
Goto Top
Das Verschieben kannst du anschließend so machen (ungetestet):

FOR /F "delims=" %%i in ('dir /b %ordner%') do move "H:\test2" "%ordner%%%i"
if %errorlevel% lss 1 (
echo %Date% %Time%: Verschieben erfolgreich>>log.txt
) else (
echo %Date% %Time%: Verschieben nicht erfolgreich>>log.txt
)

Ist allerdings ungetestet!


miniversum
Mitglied: 42641
42641 Feb 02, 2007 at 09:32:29 (UTC)
Goto Top
So ganz läuft das noch nicht. Muss ich da vielleicht noch etwas beachten ? Denn aus ordner test 1 sollen dateien un Ordner gelöscht werden was auch schon geht. und aus Ordner test2 soll von C:\test2 auf d:\test2 verschoben werden
Habe hier mal die ganze Batch eingefügt.

Mfg

Thomas S.

@echo off

set ordner=C:\test\
set Logfile=c:\%date%\log.txt

:: Löschen der Dateien und Ordner
:: Kontrolle ob löschen erfolgreich war
set leer=1
FOR /F "delims=" %%i in ('dir /b %ordner%') do if not [%%i] equ set leer=0
:: Ausgabe in Logfile
if %leer% equ 1 (
echo %Date% %Time% %ordner%: Löschen erfolgreich beendet.>>%Logfile%
) else (
echo %Date% %Time% %ordner%: Löschen nicht erfolgreich beendet.>>%Logfile%
)

set ordner=C:\test2\

FOR /F "delims=" %%i in ('dir /b %ordner%') do move "D:\test2" "%ordner%%%i"
if %errorlevel% lss 1 (
echo %Date% %Time%: Verschieben erfolgreich>>log.txt
) else (
echo %Date% %Time%: Verschieben nicht erfolgreich>>log.txt
Member: miniversum
miniversum Feb 02, 2007 at 11:52:19 (UTC)
Goto Top
Das verschieben war nicht getestet von mir.
Das Löschen geht ja.

Hier nochmal das Ganze (löschen und vershcieben) abgeändert. Gib bescheid ob es so geht wie du es willst:

set quellordner=H:\test2
set zielordner=H:\test1
set logfile=log.txt

:: Löschen der Dateien und Ordner im Zielordner
:: Kontrolle ob löschen erfolgreich war
set leer=1
FOR /F "delims=" %%i in ('dir /b %zielordner%') do if not [%%i] equ set leer=0
:: Ausgabe in Logfile
if %leer% equ 1 (
echo %Date% %Time% %zielordner%: Löschen erfolgreich beendet.>>%Logfile%
) else (
echo %Date% %Time% %zielordner%: Löschen nicht erfolgreich beendet.>>%Logfile%
)

:: Verschieben der Dateien
FOR /F "delims=" %%i in ('dir /b %quellordner%') do move "%quellordner%\%%i" "%zielordner%" 2>NUL
:: Kontrolle of verschieben erfolgreich war und Ausgabe in Logfile
if %errorlevel% lss 1 (
echo %Date% %Time%: Verschieben von %quellordner% nach %zielordner% erfolgreich>>%logfile%
) else (
echo %Date% %Time%: Verschieben von %quellordner% nach %zielordner% nicht erfolgreich>>%logfile%
)

miniversum
Mitglied: 42641
42641 Feb 02, 2007 at 12:16:00 (UTC)
Goto Top
Hi

nah dran nah dran face-smile
Ich schreibs nochmal genau hin was er machen sollte
Es gibt 3 Ordner
Test1
Test2
Test3

Der inhalt von Test 1 und 2 sol lverschoben werden auf eine andere Partition und der Inhalt von Ordner Test3 soll gelöscht werden. So wie es jetzt ist macht er das noch nicht.
Könntest Du mir da nochmal helfen. Es ist kurz vorm Ziel.

MfG

Thomas S.
Mitglied: 42641
42641 Feb 05, 2007 at 09:06:52 (UTC)
Goto Top
Batch läuft jetzt.
Nochmals vielen Dank an alle Poster die mir weitergeholfen haben.

MfG

Thomas Sergot
Member: Biber
Biber Feb 05, 2007 at 09:14:17 (UTC)
Goto Top
Moin tRipleT,

wenn Dir mein Bitte nicht als zu dreist erscheint, dann poste doch bitte den (wesentlichen Teil Deiner) Batch hier für die Bätcher, die nach uns kommen werden.

Danke
Biber
Mitglied: 42641
42641 Feb 05, 2007 at 09:20:49 (UTC)
Goto Top
Aso ja kein Problem. Hier ist die zusammengestellte Batch.

@echo off

set ordner=c:\test\
set Logfile=log.txt

:: Löschen der Dateien und Ordner
:: Kontrolle ob löschen erfolgreich war
set leer=1
FOR /F "delims=" %%i in ('dir /b %ordner%') do if not [%%i] equ set leer=0
:: Ausgabe in Logfile
if %leer% equ 1 (
echo %Date% %Time% %ordner%: Löschen erfolgreich beendet.>>%Logfile%
) else (
echo %Date% %Time% %ordner%: Löschen nicht erfolgreich beendet.>>%Logfile%
)


set quellordner=c:\testmove\
set zielordner=D:\testmove\

FOR /F "delims=" %%i in ('dir /b %quellordner%') do move "%quellordner%\%%i" "%zielordner%" 2>NUL
if %errorlevel% lss 1 (
echo %Date% %Time%: Verschieben erfolgreich>>log.txt
) else (
echo %Date% %Time%: Verschieben nicht erfolgreich>>log.txt
)


Viel Spaß damit

MfG Thomas S.