batch file maken

Status
Niet open voor verdere reacties.

ismailk

Gebruiker
Lid geworden
8 aug 2012
Berichten
7
Beste forumleden,

Heb me net pas geregistreerd en weet dus niet of ik mijn vraag wel in de goede topic heb geplaatst.
Zo niet, gelieve dit aan te geven, zodat ik er later rekening mee kan houden.

Het volgende is er aan de hand.
Ik heb een batch file gemaakt om van bepaalde mappen de inhoud compleet te gaan kopiëren.
Heb het getest en alles werkt naar behoren.
Echter het is zo dat ik dit op een netwerk wil gaan gebruiken, waar dus meerdere gebruikers kunnen inloggen op een computer.

Hieronder zie je hoe ik de script heb gemaakt.

Code:
@ECHO OFF

REM dir c:\Log backup
REM pause
REM cls

echo Nu gaan we bestanden aanmaken en kopieren!
pause
cls

MD d:\Backup\
REM echo Map aangemaakt
REM pause
REM cls

MD d:\Backup\Bureaublad\
REM echo Map aangemaakt
REM pause
cls

MD d:\Backup\Favorieten\
REM echo Map aangemaakt
REM pause
cls

MD d:\Backup\MijnDocumenten\
REM echo Map aangemaakt
REM pause
cls

MD d:\Backup\Handtekeningen\
REM echo Map aangemaakt
REM pause
cls

MD d:\Backup\outlook\
echo Map aangemaakt
pause
cls


XCOPY C:\Docume~1\%username%\Bureaublad\*.* /E d:\backup\Bureaublad\
cls
REM echo Bestand gekopieerd
REM pause
cls

XCOPY C:\Docume~1\%username%\Favorieten\*.* /E d:\backup\Favorieten\
cls
REM echo Bestand gekopieerd
REM pause
cls

XCOPY C:\Docume~1\%username%\Applic~1\Micros~1\Handtekeningen\*.* d:\backup\Handtekeningen\
cls
REM echo Bestand gekopieerd
REM pause
cls

XCOPY C:\Docume~1\%username%\Applic~1\Micros~1\Outlook\*.NK2 d:\backup\outlook\
cls
REM echo Bestand gekopieerd
REM pause
cls

xcopy C:\Docume~1\%username%\LocalS~1\Applic~1\Micros~1\Outlook\*.pab d:\Backup\outlook\
cls
REM echo Bestand gekopieerd
REM pause
cls

xcopy C:\Docume~1\%username%\LocalS~1\Applic~1\Micros~1\Outlook\*.pst d:\Backup\outlook\
cls
REM echo Bestand gekopieerd
REM pause
cls

xcopy C:\Docume~1\%username%\mijndo~1\*.* /E d:\Backup\MijnDocumenten
cls
REM echo Bestand gekopieerd
REM pause
cls

REM del f:\bat\copy\test.txt
REM echo Bestand verwijderd
REM pause
REM cls

REM RD f:\bat\copy
REM echo Map verwijderd
REM pause
REM cls

cls
echo Einde van Batch-file er word nu een log aangemaakt.
pause
dir> c:\Log backup\log.txt
echo Alles is vlot verlopen de aangemaakte bestanden zijn verwijderd.>log.txt
echo dit zijn de gegeven instructies>>log.txt
echo dir c:\Log backup\copy>>log.txt
echo MD c:\Log backup\copy>>log.txt
echo copy c:\Log backup\test.txt d:\backup\copy>>log.txt
echo del c:\Log backup\copy\test.txt>>log.txt
echo RD c:\Log backup\copy>>log.txt
time >>log.txt 
date>>log.txt
call log.txt
pause

cls
echo Log file aangemaakt en opgeslagen in d:\backup
pause
cls

echo Wilt u de aangemaakte logjes verwijderen?Ja, druk op enter.Nee, sluit dit venster. 
pause
del backup.txt
del c:\Log backup\backup.txt

Het gedeelte van de log.txt kan overgeslagen worden, moet hier nog naar kijken.
Ik heb nu de optie %username% gebruikt: C:\Docume~1\%username%\LocalS~1\Applic~1\Micros~1\Outlook\
alleen wat je gaat krijgen is dat als je pas onder de gebruiker zelf bent ingelogd de data kan kopiëren. Als je dus via een beheerders account bent ingelogd neemt de script niet de data over van de user account.

Weten jullie hoe ik dit het beste kan oppakken ?
Graag jullie advies en eventuele hulp :)
 
Laatst bewerkt door een moderator:
Je bedoelt dat USERNAME voor een beheerders account leeg is? Je zou onder het beheerders account dezelfde username kunnen zetten als hij/zij onder de gewone account heeft.
 
Nee, zo bedoel ik het niet.
Als ik nu onder admin inlog en draai het script, dan gaat de script de profiel van admin backuppen.
Wat ik wil is dat deze alle profielen die aanwezig zijn op de betreffende computer gaat backuppen ( natuurlijk in de script ook aangegeven welke mappen gebackupt moeten worden ).

Sorry als ik onduidelijk ben geweest.
 
tja, lastig.
Wat je kunt doen is de lijst met usernamen in je batch zetten en met een "loopje" gaan werken. Dan heb je het minst werk.

Code:
Backup.bat
FOR %%A IN (jan piet klaas) DO call t.bat %%A

Code:
t.bat
SET USER_NAME=%1
dir D:\temp\%1

:rest van je batch
 
Nou, dat betekent dus dat ik 1200+ usernames moet gaan invoeren in de batch file.
Dit is niet te doen. Er moet tog wel een makkelijkere oplossing hiervoor zijn?
 
Dan zou ik in jouw geval kiezen om de batch in de login te zetten zodat bij inloggen elke user de bestanden zelf op de achtergrond kopieert. Let op dat je dan wel per user een eigen backup directory maakt.
Je haalt het met de doorloop tijd ook niet om met één batch de bestanden weg te kopieëren.
Of schaf een goed backup programma aan.
 
Nou bij 1200+ namen heb je vast iets van een domein draaien en kun je dit gewoon via bijv. Active Directory regelen.

Je kunt gewoon een "DIR /B /AD > namen.txt" draaien. Genereert automatisch de namen van de mappen.
 
We hebben ook alles wat gewoon draait met backup etc.
Ik maak deze script voor onze servicedesk medewerkers, omdat daar veel pc's binnen komen voor herinstallatie. En omdat we de password van de gebruiker niet hebben, moeten ze iedere keer handmatig de bestanden backuppen. Vandaar deze oplossing. Het backuppen via batch zal via het netwerk gaan op een share.
 
Nou zoals ik al zei dus, maar in een normaal netwerk staat er niks op de pc wat niet gemist kan worden. Kan ongezien leeg dus. Is nog veel makkelijker om dat binnen het bedrijf af te spreken
 
Oh ja. En waarom geen group policies gebruiken om een en ander te redirecten.
 
Hoi Roger,

Wat je net allemaal boven zei met group policy's etc hebben we al binnen de organisatie draaien.
Waar ik dus mee bezig ben is gewoon puur om het tussen door te doen voor de Servicedesk collega's van ons, om hun werk te verminderen.
Dus op lokatie komt er een computer langs en deze moeten ze backuppen. Het enige wat ik wil is dat als ze onder een beheerders account zijn ingelogd dat alle profielen meegenomen moeten worden dmv de script op de aangegeven locaties.

PS: Het is nu zo dat er een hoofdmap word aangemaakt op een partitie genaamd ''backup''.
Echter als er een 2de kopieer actie gestart word, word hetzelfde mapje weer aangemaakt en zal dus overschreven worden.
Kan ik ook ervoor zorgen dat de naam geving automatisch gewijzigd word in het te kopieren profielnaam waar op dat moment het script mee bezig is ?
 
Dat kan door eerst een check te noem of de map al bestaat met IF EXIST . Indien ja dan de naam aanpassen.
 
Heb het probleem al verholpen en het gehele script omgegooid en een nieuwe gemaakt.
Zie hieronder:


dir "c:\documents and settings" /B > \\LAP0536\D$\backup\users.txt


for /f "tokens=* delims= " %%a in (\\LAP0536\D$\backup\users.txt) do (

echo XCOPY /-Y C:\Docume~1\%%a\Bureaublad\*.* /E \\LAP0536\D$\backup\%computername%\%%a\Bureaublad\ >> \\LAP0536\D$\backup\run.cmd
echo XCOPY /-Y C:\Docume~1\%%a\Favorieten\*.* /E \\LAP0536\D$\backup\%computername%\%%a\Favorieten\ >> \\LAP0536\D$\backup\run.cmd
echo XCOPY /-Y C:\Docume~1\%%a\Applic~1\Micros~1\Handtekeningen\*.* \\LAP0536\D$\backup\%computername%\%%a\Handtekeningen\ >> \\LAP0536\D$\backup\run.cmd
echo XCOPY /-Y C:\Docume~1\%%a\Applic~1\Micros~1\Outlook\*.NK2 \\LAP0536\D$\backup\%computername%\%%a\outlook\ >> \\LAP0536\backup\run.cmd
echo xcopy /-Y C:\Docume~1\%%a\LocalS~1\Applic~1\Micros~1\Outlook\*.pab \\LAP0536\D$\Backup\%computername%\%%a\outlook\ >> \\LAP0536\D$\backup\run.cmd
echo xcopy /-Y C:\Docume~1\%%a\LocalS~1\Applic~1\Micros~1\Outlook\*.pst \\LAP0536\D$\Backup\%computername%\%%a\outlook\ >> \\LAP0536\D$\backup\run.cmd
echo xcopy /-Y C:\Docume~1\%%a\mijndo~1\*.* /E \\LAP0536\D$\Backup\%computername%\%%a\MijnDocumenten\ >> \\LAP0536\D$\backup\run.cmd


)


call \\LAP0536\D$\backup\run.cmd
del \\LAP0536\D$\backup\run.cmd
del \\LAP0536\D$\backup\users.txt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan