sloddi
Goto Top

Batch-Datei die Nach Datums-Kriterium Kopiert, zu einem RAR-Archiv hinzufügt und die nicht archivierten dateien löscht!

Hallo zusammen,

ich hab folgendes Problem...

Ich möchte Monatlich eine kleine Datensicherung auf eine externe USB-Platte machen. Dazu muss ich jedes mal einzeln in die verzeichnisse und die dateien suchen, verzippen und kopieren! Echt nervig! Dann habe ich mir gedacht ich könnte das ganze doch automatisieren und ich hab mich an eine batch gewagt! Naja bin ein absoluter leihe auf diesem Gebiet!
Ich habe mir jetzt schon ein Grundgerüst aufgebaut und mein kleines Programm kopiert dateien von a nach b, verzippt sie und löscht die nicht archivierten Dateien danach wieder! Jetzt fehlt mir noch die Filterung der dateien! in dem Ordner aus dem ich kopieren sind dateien des ganzen jahres vorhanden! ich möchte aber nur den letzten Monat sichern! Wie stelle ich das an? Wie mache ich so eine bedingung!?

Komme echt nicht weiter!

Hier mal mein Code bis jetzt!

@echo OFF
CLS

REM ------------------------------------------------------------

REM Name: copy_rar_del.bat

REM Autor: csl

REM Datum: 06.03.09

REM ------------------------------------------------------------

:: Kopieren der Dateien von a nach b

ECHO Die Datensicherung wird gestartet ..

ECHO.

pause

XCOPY C:\all\*.* C:\Dokume~1\csl\Desktop\test\*.* /V

Echo.

Echo Die Daten wurden gesichert!

:: pause

:: Die Dateien zu einem neuen Winrar-Archiv hinzufügen!

ECHO Die Daten werden zu Archiv hinzugefuegt

pause

ECHO.

cd \

cd C:\Dokume~1\csl\Desktop\test\

C:\Programme\WinRAR\WinRAR.exe a test.rar

echo.

echo Daten wurden Archiviert

:: pause

:: Aufruf der Loeschen.bat zum loeschen der nicht archivierten Dateien

call C:\Dokume~1\csl\Desktop\loeschen.bat


REM -------------------------- E O F ---------------------------


wäre über jede hilfe sehr dankebar!!

greets Sloddi

Content-ID: 110889

Url: https://administrator.de/forum/batch-datei-die-nach-datums-kriterium-kopiert-zu-einem-rar-archiv-hinzufuegt-und-die-nicht-archivierten-110889.html

Ausgedruckt am: 23.12.2024 um 09:12 Uhr

bastla
bastla 09.03.2009 um 12:29:09 Uhr
Goto Top
Hallo Sloddi und willkommen im Forum!

Die im Vormonat geänderten oder erstellten Dateien kannst Du etwa so kopieren:
@echo off & setlocal
set "Quelle=C:\all\*.*"  
set "Ziel=C:\Dokume~1\csl\Desktop\test\"  

::Jahr aus aktuellem Datum ermitteln (Voraussetzung: die Jahreszahl wird mit "echo %date%" vierstellig angezeigt) 
set J=%date:~-4%
::Vormonat + 100 berechnen (damit die führende Null erhalten bleibt)
set /a VM=1%date:~-7,2%-1
::die beiden letzten Stellen ergeben die Monatszahl
set "VM=%VM:~-2%"  
::Monatszahl "00" bedeutet "Vormonat war Dezember", daher: Monat auf 12 setzen und Jahr reduzieren 
if "%VM%"=="00" (  
    set "VM=12"  
    set /a J-=1
)
::Alle Dateien der "Quelle" einzeln durchgehen, und bei Vorhandensein von ".Monat.Jahr" im Dateidatum kopieren 
for %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%">nul && echo copy "%%i" "%Ziel%"  
Das "echo" vor dem "copy" soll (zum Testen) die Kopierbefehle nur anzeigen; wenn Du es weglässt wird tatsächlich kopiert (dann könntest Du am Ende der Zeile noch ">nul" hinzufügen, damit nicht für jede Datei "1 Datei kopiert." angezeigt wird).

Grüße
bastla
Sloddi
Sloddi 09.03.2009 um 14:58:57 Uhr
Goto Top
Wow Danke für die schnelle antwort! Ich hab jetzt mal den Quelltext seperat in eine batch-datei eingefügt und probiert ob sich da was tut^^ naja kommt immer ein syntax-fehler das Problem ist dabei, du hast es toll erklärt und beschrieben, aber ich blick da nicht durch! o.0

Kann es vllt sein dass ich von tt-mm-jjjj auf jjjj-mm-tt drehen muss?


::Vormonat + 100 berechnen (damit die führende Null erhalten bleibt)
set /a VM=1%date:~-7,2%-1

das hab ich auch nicht verstanden! kannst du vllt nochmal versuchen mir diese zeile näher zu erläutern!

vielen dank

gruss sloddi
Sloddi
Sloddi 09.03.2009 um 16:13:14 Uhr
Goto Top
also ich hab hier und da noch einwenig rumgebastelt und bin jetzt so weit, dass das programm bis zur for-schleife kommt! Und sogar mit den richtigen werten face-wink

Aber hier streikt dann das programm er kopiert nichts und zeigt auch nichts an das er koipieren möchte! er hält kurz an arbeitet und dann ist ende!

hier nochmal der code:

::Alle Dateien der "Quelle" einzeln durchgehen, und bei Vorhandensein von ".Monat.Jahr" im Dateidatum kopieren
for %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%">nul && echo copy "%%i" "%Ziel%"

weist du vllt woran es liegt bastla?

greets Sloddi
bastla
bastla 09.03.2009 um 16:31:24 Uhr
Goto Top
Hallo Sloddi!

Nimm zum Testen ersatzweise die folgende Zeile:
for %%i in ("%Quelle%") do echo %%~ti_%%i
Das Ergebnis sollte sein, dass für alle Dateien des Quell-Ordners das Dateidatum (in der Form TT.MM.JJJJ hh:mm) und der Dateiname ausgegeben werden.

Grüße
bastla
Sloddi
Sloddi 09.03.2009 um 18:32:44 Uhr
Goto Top
ja das klappt einwandfrei!

aber was ist dann ab dem |findstring und dem rest?

gruss
bastla
bastla 09.03.2009 um 18:45:00 Uhr
Goto Top
Hallo Sloddi!

Na gut - dann weiter:
for %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%"
müsste, richtige Inhalte von %VM% und %J% (also "02" und "2009") vorausgesetzt, eine Liste von Dateidatumswerten (ohne Dateinamen) aus dem Feber 2009 ausgeben (geprüft wird auf das Vorhandensein von ".02.2009").

Grüße
bastla
Sloddi
Sloddi 11.03.2009 um 09:07:26 Uhr
Goto Top
Hi,

sorry für die verspätung! Hatte einen Tag Schule!

also ich hab den Code eingefügt und einwenig rum probiert, aber es passiert nichst! Hab in den test ordner aber extra dateien von Februar rein gestellt! Wenn ich es richtig verstanden habe, sollte nach ausfühung alle dateien von Februar 2009 angezeigt werden! Richtig?
Aber es kommt kein ergebnis! man sieht wieder das er arbeitet aber dach kommt nichts!
Biber
Biber 11.03.2009 um 09:51:09 Uhr
Goto Top
Moin Sloddi,

eins der angenehmen Features bei Batch-Befehlen ist, dass sich durchaus einzelne (Teil-)Zeilen am CMD-Prompt testen lassen.

Also bitte taste Dich wie folgt heran:
Grenze den Fehler am CMD-Prompt ein:
Statt des Batch-Befehls for %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%" erstmal bröckchenweise
for %i in ("C:\bla\Test\*.*") do echo %~ti  
--- wenn Daten kommen...--
for %i in ("C:\bla\Test\*.*") do @echo %~ti|findstr "\.06\.08"  
Wenn in beiden Fällen mit festen Werten für %Quelle%, %VM%, %J% Daten angezeigt werden,
> dann überprüfen ob diese drei Variablen richtig gesetzt sind.

Grüße
Biber
Sloddi
Sloddi 11.03.2009 um 12:45:13 Uhr
Goto Top
Mahlzeit!

Also bin jetzt soweit, dass das script mir Dateien von a nach b kopiert! echt klasse!
Habe bei der Variablen %J% =Jahr noch 2 Stellen abschneiden müssen weil er 2009 ausgelesen hat in den datei atributen aber nur 09 rauskommt!
Danke für die Hilfe!

Jetzt hab ich nur noch ein Problem! Und zwar kopiert er mir die gefragten dateien die ordner im verzeichniss ebenfalla, aber ich möchte auch noch den inhalt der ordner von februar 09 mit unterverzeichnissen kopieren! Wie stelle ich das an?
laut sämtlichen tipps im i-net soll der option e alles mitkopieren! Macht er leider nicht! Habe dann mal getestet ob er es macht wenn ich den befehl von a nach b kopieren mit verzeichnissstruktur manuel eingebe in die cmd funktioniert es einwandfrei! Kann es vllt. sein, dass die bediengungen irgendwie da rein funken?


hab noch keine Lösung gefunden!

Hier mal mein aktuelles Script:


@echo off & setlocal

set "Quelle=C:\all\*.*"
set "Ziel=C:\Dokume~1\csl\Desktop\test\"

::Jahr aus aktuellem Datum ermitteln (Voraussetzung: die Jahreszahl wird mit "echo %date%" vierstellig angezeigt)
set J=%date:~-4%

::echo %date:~-4%

::Vormonat + 100 berechnen (damit die führende Null erhalten bleibt)
set /a VM=1%date:~-7,2%-1

::echo %VM%

::die beiden letzten Stellen ergeben die Monatszahl
set "VM=%VM:~-2%"

::echo %VM% vm2

::Monatszahl "00" bedeutet "Vormonat war Dezember", daher: Monat auf 12 setzen und Jahr reduzieren

if "%VM%"=="00" (
set "VM=12"
set /a J-=1 )

::Alle Dateien der "Quelle" einzeln durchgehen, und bei Vorhandensein von ".Monat.Jahr" im Dateidatum kopieren

set "J=%J:~-3%"

for %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%">nul && xcopy /E /Y "%%i" "%Ziel%"

pause


mfg Sloddi
bastla
bastla 11.03.2009 um 17:07:33 Uhr
Goto Top
Hallo Sloddi!

Es sollte eigentlich genügen, eine weitere Schleife für die Unterordner des Quellordners hinzuzufügen - ungetestet sähe das dann so aus:
@echo off & setlocal

set "Quelle=C:\all\*.*"  
set "Ziel=C:\Dokume~1\csl\Desktop\test\"  

::Jahr zweistellig aus aktuellem Datum ermitteln
set J=%date:~-2%

::Vormonat + 100 berechnen (damit die führende Null erhalten bleibt)
set /a VM=1%date:~-7,2%-1

::die beiden letzten Stellen ergeben die Monatszahl
set "VM=%VM:~-2%"  

::Monatszahl "00" bedeutet "Vormonat war Dezember", daher: Monat auf 12 setzen und Jahr reduzieren 
if "%VM%"=="00" (  
    set "VM=12"  
    set /a J-=1 )

::Alle Dateien der "Quelle" einzeln durchgehen, und bei Vorhandensein von ".Monat.Jahr" im Dateidatum kopieren 
for %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%">nul && xcopy /Y "%%i" "%Ziel%"  
::Alle Unterordner der "Quelle" einzeln durchgehen, und bei Vorhandensein von ".Monat.Jahr" im Ordnerdatum gesamte Ordnerstruktur kopieren 
for /d %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%">nul && xcopy /E /Y "%%i" "%Ziel%"  
Grüße
bastla

P.S.: Da ich es bisher sträflicher Weise verabsäumt habe, erst jetzt der Hinweis auf die Möglichkeit der -Formatierung ...
Sloddi
Sloddi 13.03.2009 um 08:45:43 Uhr
Goto Top
Moin,

also Bastla der weg funkitoniert! Naja zumindest kopiert er den inhalt der einzelnen ornder im verzeichniss aber nicht die ordner selbst! Spricht die verzeichniss struktur bleibt nicht erhalten! Die ornber werden nicht mitkopiert! Was sehr schade ist weil die dateienn dann einfach überall verstreut liegen!

Weis vllt jemand wie man die struktur beibehält!?

mfg Sloddi
bastla
bastla 13.03.2009 um 15:15:17 Uhr
Goto Top
Hallo Sloddi!

Ändere die letzte Zeile auf
for /d %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%">nul && xcopy /E /Y "%%i" "%Ziel%\%%~nxi\"
Grüße
bastla
Sloddi
Sloddi 13.03.2009 um 16:30:33 Uhr
Goto Top
Hallo,

man bastla du bist echt ein genie! es funktioniert! Aber kannst du mir vllt kurz erklären was %~nxi\ ausmacht? oder bewirkt? und warum du es genommen hast!?

Ich möchte nun nach dem kopieren die kopierten dateien in einer RAR-Datei kompremieren und archivieren! Habe hierzu schon eine einbindung von WinRAR vorgenommen! Nur nun kommt wieder das selbe problem, er archiviert mir die ordner und dessen inhalte nicht nur die dateien ohne ordner werden archviert!

Quellcode bis jetzt:

@echo off & setlocal 

del C:\Dokume~1\csl\Desktop\test\test.log

echo Die Daten vom vorherigen Monat werden Gesichert!

pause

set "Quelle=C:\all\*.*"   
set "Ziel=C:\Dokume~1\csl\Desktop\test\"   

::Jahr aus aktuellem Datum ermitteln (Voraussetzung: die Jahreszahl wird mit "echo %date%" vierstellig angezeigt)  
set J=%date:~-4% 

::echo %date:~-4%

::Vormonat + 100 berechnen (damit die führende Null erhalten bleibt) 
set /a VM=1%date:~-7,2%-1

::echo %VM%

::die beiden letzten Stellen ergeben die Monatszahl 
set "VM=%VM:~-2%"   

::echo %VM% vm2

::Monatszahl "00" bedeutet "Vormonat war Dezember", daher: Monat auf 12 setzen und Jahr reduzieren  
 
if "%VM%"=="00" (    
   set "VM=12"   
   set /a J-=1 )

::Alle Dateien der "Quelle" einzeln durchgehen, und bei Vorhandensein von ".Monat.Jahr" im Dateidatum kopieren  

set "J=%J:~-3%"  

for %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%">nul && xcopy /Y "%%i" "%Ziel%" >> C:\Dokume~1\csl\Desktop\test\test.log  

::Alle Unterordner der "Quelle" einzeln durchgehen, und bei Vorhandensein von ".Monat.Jahr" im Ordnerdatum gesamte Ordnerstruktur kopieren  

for /d %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%">nul && xcopy /E /Y "%%i" "%Ziel%\%%~nxi\" >> C:\Dokume~1\csl\Desktop\test\test.log  

echo Die Daten wurden kopiert!

ECHO Die Daten werden zu Archiv hinzugefuegt

pause

ECHO.

cd \

::cd C:\Dokume~1\csl\Desktop\test\

cd %Ziel%

C:\Programme\WinRAR\WinRAR.exe a test.rar

echo.

echo Daten wurden Archiviert


ps: ist das so richtig mit dem Format?!

mfg Sloddi
Sloddi
Sloddi 13.03.2009 um 16:58:35 Uhr
Goto Top
Ahhhhhhhhhh! Ich idiot! hab mal wieder zu voreilig gepostet!

Ich habs rausgefunden! man muss einfach nur mit dem parameter -r welcher rekursiv bedeutet das verzeichnis durchsuchen! Sprich:

C:\Programme\WinRAR\WinRAR.exe a -r  test.rar 

dann Funktioniert es!

Jetzt gibt es nur noch ein einziges problem zu lösen!

ich habe nun alle dateien die ich kopiert habe + logfile + RAR-datei in einem Ordner, nun möchte ich alles aus diesem ordner löschen bis auf die rar-datei oder spätermal RAR-Dateien!

Wie kann ich also bedingt löschen?! Wie man löscht wenns nur gleiche dateien sind und die rar-datei weis ich aber was ist wenn es dann verschiedene sind und ordner dazu?!

hier noch mein löschvorgang bis jetzt:

@echo off 

cls

echo Die nicht Archvierten Dateien werden nun geloescht!

pause

del /S /Q C:\Dokume~1\csl\Desktop\test\*.tif
for /d %%i in (C:\Dokume~1\csl\Desktop\test\*.*) do rd /s /q "%%i"  

Echo Die Daten wurden geloescht!

pause

löscht alle Ordner und tif-dateien!


über lösung vorschläge wäre ich wie immer sehr Happy!


mfg Sloddi
bastla
bastla 13.03.2009 um 20:14:19 Uhr
Goto Top
Hallo Sloddi!

Zum Löschen aller Dateien außer jener eines bestimmten Typs (.rar, im Beispiel als Variable festgelegt) gäbe es mehrere Möglichkeiten - der Einfachheit halber wird jeweils vorausgesetzt, dass es um die Dateien des aktuellen Ordners geht, was sich vorweg so erreichen lässt:
@echo off & setlocal
::in den Ordner wechseln
cd /d "C:\Dokume~1\csl\Desktop\test"  
::Typ der nicht zu löschenden Dateien festlegen
set "Excl=.rar"  
Funktionieren sollten alle folgenden Varianten:
  • in einer Schleife alle Dateien auf den Typ hin untersuchen und .rar-Dateien nicht löschen:
for /f "delims=" %%i in ('dir *.* /b /a-d') do if /i "%%~xi" neq "%Excl%" del "%%i"  
  • per "findstr" die nicht zu löschenden Dateien ausfiltern:
for /f "delims=" %%i in ('dir *.* /b /a-d^|findstr /i /e /v "%Excl%"') do del "%%i"  
  • die nicht zu löschenden Dateien verstecken, die "sichtbaren" löschen und die versteckten Dateien wieder sichtbar machen:
attrib +h *%Excl%
del /q *.*
attrib -h *%Excl%

Noch als Nachtrag zu oben:
Aber kannst du mir vllt kurz erklären was %~nxi\ ausmacht? oder bewirkt? und warum du es genommen hast!?
Eigentlich sind es ja zwei Teile "%%~nxi" und "\" ...

Das %%i in der Schleife entspricht jeweils einem Unterordner mit vollständiger Pfadangabe.

Für einen solchen Pfad gibt es eine Zerlegungsmöglichkeit in seine Einzelteile
Laufwerk (%%~di für drive),
Pfad (%%~pi),
(Datei-)Name (%%~ni) und
Typ (%%~xi für extension)
- siehe dazu "for /?" gegen Ende.

Diese Teile lassen sich auch kombiniert angeben, wodurch also "%%~nxi" Name und Typ liefert (Typ ist dabei, damit Ordnernamen, die einen oder mehrere Punkte enthalten, vollständig erfasst werden, da ansonsten der Teil nach dem letzten Punkt verloren ginge).

Damit wird also "xcopy" beauftragt, im Zielordner den Unterordner anzulegen. Da dieser vermutlich noch nicht existiert, muss "xcopy" auch mitgeteilt werden, dass es sich beim Ziel um einen Ordner und keine Datei handelt - ansonsten käme die Frage:
Ist das Ziel DeinOrdnername ein Dateiname
oder ein Verzeichnisname
(D = Datei, V = Verzeichnis)?
Mit dem "\" am Ende des Kopierzieles wird festgelegt, dass das Ziel ein Ordner ist.

Grüße
bastla
Sloddi
Sloddi 16.03.2009 um 10:56:15 Uhr
Goto Top
Hallo,

als erstmal vielen Dank Bastla für die tolle Erläuterung langsam machts klick bei mir!^^

Ich das mit dem Löschen jetzt erstmal anders gelöst! Nachdem ich nämlich die Konsolen-Hilfe von WinRAR durchforstet habe, hab ich rausgefunden, das es einen Befehl (m) gibt der Verschiebt stats nur zu kopieren, d.h. Löschen brauch ich nichts mehr!

Eigentlich wäre damit mein Thema soweit durch! Aber bevor ich dieses Thema als gelöst makiere würde ich noch gerne warten, da ich jetzt erst die datei auf die große Leinwand bringe face-wink
Sprich zur richtigen datensicherung gehe! und ich hab auch schon ein problem! Und zwar sind in dem ordner den ich sichern will ca 50.000 Dateien! Kann es sein, dass da die Batch-Datei überfordert ist wenn sie da nur vom Vormonat dateien rauskopieren soll?

Die verarbeitung läuft nämlich nicht einmal an!?

Wenn ich nur etwas kopieren will, ohne Vormonatbedingung aus einem Ordner mit ca 20.000 Dateien, Funktioniert das ohne Probleme!

Hier mal mein Sozusagen Final-Code:

@echo off & setlocal 

del C:\Dokume~1\csl\Desktop\test\test.log

echo Die Daten vom vorherigen Monat werden Gesichert!

::pause

set "Quelle=C:\all\*.*"   
set "Ziel=C:\Dokume~1\csl\Desktop\test\"   

::Jahr aus aktuellem Datum ermitteln (Voraussetzung: die Jahreszahl wird mit "echo %date%" vierstellig angezeigt)  
set J=%date:~-4% 

::Vormonat + 100 berechnen (damit die führende Null erhalten bleibt) 
set /a VM=1%date:~-7,2%-1

::die beiden letzten Stellen ergeben die Monatszahl 
set "VM=%VM:~-2%"   

::Monatszahl "00" bedeutet "Vormonat war Dezember", daher: Monat auf 12 setzen und Jahr reduzieren  
 
if "%VM%"=="00" (    
   set "VM=12"   
   set /a J-=1 )

::Alle Dateien der "Quelle" einzeln durchgehen, und bei Vorhandensein von ".Monat.Jahr" im Dateidatum kopieren  

set "J=%J:~-3%"  

for %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%">nul && xcopy /Y "%%i" "%Ziel%" >> C:\Dokume~1\csl\Desktop\test\test.log  

::Alle Unterordner der "Quelle" einzeln durchgehen, und bei Vorhandensein von ".Monat.Jahr" im Ordnerdatum gesamte Ordnerstruktur kopieren  

for /d %%i in ("%Quelle%") do echo %%~ti|findstr "\.%VM%\.%J%">nul && xcopy /E /Y "%%i" "%Ziel%\%%~nxi\" >> C:\Dokume~1\csl\Desktop\test\test.log  

echo Die Daten wurden kopiert!

ECHO Die Daten werden zu Archiv hinzugefuegt

::pause

ECHO.

cd \

cd %Ziel%

C:\Programme\WinRAR\WinRAR.exe m -r test.rar

echo.

echo Daten wurden Archiviert


Über Anregungen wäre ich dankbar!

grüße Sloddi
bastla
bastla 16.03.2009 um 11:53:44 Uhr
Goto Top
Hallo Sloddi!

Die Zeile 29
set "J=%J:~-3%"
ergibt für mich keinen Sinn - wenn Du das Jahr zweistellig benötigst, dann anstelle von "3" eben "2" verwenden ...

Grüße
bastla
Sloddi
Sloddi 16.03.2009 um 12:58:17 Uhr
Goto Top
Hi,

so hab ich mir das auch am anfang gedacht, doch wenn ich nur die 2 angebe kommt nur 9 raus statt 09!

Deshalb habe ich es danach mit der 3 probiert und es hat funktioniert!

zum testen hab ichs danach einfach mit echo augeben lassen und es hat gestimmt! deswegen habe ich es auch so gelassen!

Habe es gerade nocheinmal getestet und es funktioniert noch! mit der 3!

grüsse sloddi
bastla
bastla 16.03.2009 um 13:01:53 Uhr
Goto Top
Hallo Sloddi!

Ja, hab's jetzt auch gesehen: Schuld ist die Zeile 13 - dort steht am Ende noch ein Leerzeichen - lässt sich leicht so vermeiden:
set "J=%date:~-4%"
Grüße
bastla
Sloddi
Sloddi 16.03.2009 um 15:36:22 Uhr
Goto Top
Klasse Bastla,

du hast wie immer recht^^

hab den fehler behoben! hätte nicht gedacht, dass er das Leerzeichen hinter der variabeln noch mit rein nimmt!

hast du vllt. eine Ahnung warum die Batch nicht loslegt? Ist sie vllt überfordert mit andie 50.000 Dateien? Zuviel zu durchsuchen vllt.? Die batch muss ca. 3.000 Dateien und ordner aus 50.000 filtern! ist das zuviel?

wenn ch das mit der hand machen muss ist es echt ne quälerei! -.-

gruss Sloddi
Biber
Biber 16.03.2009 um 16:33:44 Uhr
Goto Top
Moin Sloddi,


[Eröffnungspost:] Ich möchte Monatlich eine kleine Datensicherung auf eine externe USB-Platte machen.
[eine Woche später] ....vllt überfordert mit andie 50.000 Dateien? Zuviel zu durchsuchen vllt.? Die batch muss ca. 3.000 Dateien und ordner aus 50.000 filtern!...

Ich will da ja nicht reinreden, aber...
Der Zeitpunkt des Umsteigens auf ein professionelles Backuptool (= eines, das Features wie Datenkompression, logging, inkrementelle Sicherungen durchdeklinieren und nicht nur simulieren kann) hängt sicherlich vor allem von 3 Störgrößen maßgeblich ab:

  • dem Datenvolumen resp der Zeit eines Sicherungslauf und der Zeitdauer der eingeschränkten Verfügbarkeit/Produktivsystemausfalls durch den Sicherungslauf
  • der Wichtigkeit ("Unersetzbarkeit") der Daten
  • dem ohne Gewaltanwendung freikeilbaren Budget des Auftraggebers

Soll heißen:
  • wenn der Kunde kein Geld für vernünftiges Werkzeug ausgeben will und die Daten ersetzbar sind und ein eingeschränkter Zugriff während eines Sicherungslaufs kein Thema ist--> dann bleib bei einem Batchkonstrukt
  • wenn es aber soooo lange dauert, dass ihr evtl erst nach Stunden erfahrt, ob es denn überhaupt funktioniert hat oder ob die Batch nie wiederkehren wird ---> nehmt Geld in die Hand und steigt um auf Profi- statt Baumarkt-Tools

In Deinem Beispiel-Fall würde ich behaupten, hier sollte der Kunde auf die Notwendigkeit einer Profi-Lösung hingewiesen (oder zumindest vorbereitet) werden.

Grüße
Biber
Sloddi
Sloddi 17.03.2009 um 10:51:36 Uhr
Goto Top
Moin,

also hier nocheinmal mein Standpunkt!
Ich bin in einer Firma in der EDV-Abteilung und mache dort jeden Monat eine Datensicherung! Nix großes etwa 30 GB insgesamt! Und diese Sicherung habe ich bis jetzt immer mit der Hand gemacht! Sprich alles immer selst rauskopiert und wenn nötig verzippt! und auf diese Arbeit habe ich keine Lust mehr, da eine Batch diese Sache auch automatisieren könnte!
Eine Verarbeitung nach der anderen sollte die Batch eigtl. können. oder täusche ich mich da?

Zu der Geldfrage: Nein ich möchte kein Geld in die Hand nehmen! Den es geht ja auch, zur Not, mit der Hand! nur dazu habe ich keine Lust mehr!

Und da die Batch weitestgehends ziemlich fertig ist möchte ich sie nun auch einsetzten!

Nur ist halt noch ein Problem offen, die Verarbeiten rollt nicht an! Normales kopieren mit ca. 20.000 Dateien und Ordner mit anschlißernder Archivierung mit WinRAR funktioniert einwandfrei!
Nur wenn ich mit der Bedingung mit dem Vormonat eine Batch starte rollt sie nicht an!

Hat jemand vllt eine Idee warum? Oder wie man das Problem löst?

mfg Sloddi
Sloddi
Sloddi 23.03.2009 um 08:21:32 Uhr
Goto Top
Morgen,

kann mir hier echt keiner mehr weiterhelfen?

Jemad ne ahnung warum die batch nicht wieterläuft und einfach abbricht nach ca 2min warten?!
und vorallem wie man das hier lösen kann!

mfg Sloddi
bastla
bastla 23.03.2009 um 15:45:26 Uhr
Goto Top
Hallo Sloddi!

Eigentlich sieht das eher danach aus, als würde der Batch durchlaufen und nur eben keine Dateien zum Kopieren finden ...

Versuch es so: Lass durch die neue Zeile 30 mit
echo #%VM%#%J%# & goto :eof
Vormonat und Jahr ausgeben und danach den Batch beenden (die Zeile brauchst Du danach nicht mehr).

Falls die Ausgabe so aussieht (ohne irgendwelche Leerzeichen zwischendrin):
#02#2009#
versuch als Nächstes direkt an der Kommandozeile den Befehl:
for %%i in ("C:\all\*.*") do echo %%~ti#%%i|findstr "\.02\.2009"
Damit sollte für alle passenden Dateien des Ordners Dateidatum und Dateiname ausgegeben werden.

Soferne das funktioniert, kannst Du obige Zeile ersatzweise als Zeile 31 und ein "goto :eof" als Zeile 32 (vorübergehend) einbauen - es sollte dann die selbe Ausgabe erzielt werden.

Danach sehen wir weiter ...

Grüße
bastla