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
Findet heir vieleicht jemand den Fehler?
MfG Martin
und ich weis nicht warum
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
5 Kommentare
Neuester Kommentar
Hallo s7mahess!
In der Zeile
ist durch das
Was Du eigentlich wolltest wäre:
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
In der Zeile
for /F "delims=" %%a in ('dir %1 /b /a-D /s') do call:prozfilessortout %%~za "%%a"
%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"
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
Hallo s7mahess!
Mit ein paar Anpassungen:
Grüße
bastla
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
bastla