s7mahess
Goto Top

Anpassung einer Datensicherungs-Batchdatei

Ich habe folgende Batch Datei, gefunden/modifiziert um von "F:\wks100" dateien zu splitten und nach "F:\sicherung" zu kopieren, allerdings kopiert er komplett "F:\".

und ich weis nicht warum face-sad

Findet heir vieleicht jemand den Fehler?

set "roottarget=F:\WKS100\"  
set "target=F:\Sicherung\"  
set "limit=4300000000"  

REM Dateien der größe nach sortiert in sortedonlyfiles.txt schreiben
for /F "delims=" %%a in ('dir %1 /b /a-D /s') do call:prozfilessortout %%~za "%%a"  
call:copys

:prozfilessortout
set "size=                    %1"  
echo %size:~-20%:%~2>>"files.txt"  
goto:eof


:copys
REM Dateien kopieren bis voll
set /a vnr=1
for /F "tokens=1* delims=:" %%a in ('sort "files.txt" /R') do call:prozcopyfiles %%a "%%b"  
del "files.txt"  
del "targetsize.txt"  
goto:eof

:prozcopyfiles 
dir /s /-c "%roottarget%\%target%%vnr%\">"targetsize.txt"   
for /F "delims= " %%c in ('find "Datei(en)" "targetsize.txt"') do set dirsize=%%c   
set /a willsize=%1+%dirsize% 
if %willsize% geq %limit% ( 
  set /a vnr+=1 
) 
 
if not exist "%roottarget%\%target%%vnr%%~p2\NUL" md "%roottarget%\%target%%vnr%%~p2" 2>NUL   
Kopiere %2 nach "%roottarget%\%target%%vnr%%~p2"   
copy %2 "%roottarget%\%target%%vnr%%~p2">NUL   
goto:eof 


MfG Martin
Kommentar vom Moderator Biber am 05.02.2010 um 12:19:47 Uhr
Irre führenden /Wirren früheren Originaltitel "Syntax Fehler in Batch Datei" geändert in"Anpassung einer Datensicherungs-Batchdatei"

Content-ID: 135243

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

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

manuel-r
manuel-r 05.02.2010 um 11:10:18 Uhr
Goto Top
Sollte nach deiner Beschreibung ein einfaches
xcopy f:\wks100 f:\sicherung /e /v /c /i /h /y
nicht völlig ausreichend sein?
s7mahess
s7mahess 05.02.2010 um 11:31:52 Uhr
Goto Top
Nein ich will ja das all 4,3 gb automatisch nen neuer ordner erstellt wird
bastla
bastla 05.02.2010 um 11:52:44 Uhr
Goto Top
Hallo s7mahess!

In der Zeile
for /F "delims=" %%a in ('dir %1 /b /a-D /s') do call:prozfilessortout %%~za "%%a"
ist durch das %1 festgelegt, dass als Startordner ein beim Aufruf übergebener Parameter verwendet werden soll - wenn es den nicht gibt, startet der Batch eben vom aktuellen Ordner aus ...

Was Du eigentlich wolltest wäre:
for /F "delims=" %%a in ('dir "%roottarget%" /b /a-D /s') do call:prozfilessortout %%~za "%%a"
Grüße
bastla

P.S.:Der Threadtitel ist nicht nur wenig aussagekräftig, sondern eigentlich auch sachlich unrichtig ...

... was durch die etwas ungewöhnliche Form der Begrüßung - "Ich habe folgende Batch Datei" - nicht wirklich besser wird
s7mahess
s7mahess 05.02.2010 um 12:46:18 Uhr
Goto Top
Danke, der erste teil ist schonma geschaft.

Jetzt liest er schonmal das richtige Verzeichnis nur kopieren tut das Script immernoch nicht.
bastla
bastla 05.02.2010 um 15:46:25 Uhr
Goto Top
Hallo s7mahess!

Mit ein paar Anpassungen:
@echo off & setlocal
set "source=F:\WKS100"  
set "target=F:\Sicherung"  
set "limit=4300000000"  

for /f "delims=" %%a in ('dir "%source%" /b /a-D /s') do call:prozfilessortout %%~za "%%a"  

set /a vnr=1
for /f "tokens=1* delims=:" %%a in ('sort "files.txt" /R') do call:prozcopyfiles %%a "%%b"  
del "files.txt"  
goto :eof

:prozfilessortout
set "size=                    %1"  
echo %size:~-20%:%~2>>"files.txt"  
goto :eof

 :prozcopyfiles
set /a dirsize=0
for /f "tokens=3" %%c in ('dir /s /-c "%target%\%vnr%"^|findstr "Datei(en)"') do set dirsize=%%c  
set /a willsize=%1+%dirsize%
if %willsize% geq %limit% set /a vnr+=1

md "%target%\%vnr%" 2>NUL  
echo Kopiere %2 nach "%target%\%vnr%"  
copy %2 "%target%\%vnr%">NUL  
goto :eof
Grüße
bastla