Toon posts:

[XP] Batch map kopiëren en leegmaken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben voor in een batch bestand op zoek naar een regel die ervoor zorgt dat hij een map kopieert en vervolgens het origneel leegmaakt, belangrijk hierbij is wel dat die map elke keer dat de batch wordt aangeroepen een andere naam moet hebben... dus de eerste kopie van de originele map is bijvoorbeeld copy1 en de volgende heet dan copy2, zoiets... ik heb geen idee waar ik moet beginnen want ik ben nogal een beginneling op dit gebied.
Iemand een oplossing?

Verwijderd

Welk besturingssysteem precies?
het commando (programma) MOVE, bijgeleverd met DOS, zou moeten doen wat je wilt.
Maar wat wil je precies eigenlijk? Alle map-inhoud (inclusief subdirectories?) verplaatsen naar een andere map? In een eigen directory, of toch niet?

@echo off
if "%1"=="" goto help
xcopy /s %1\*.* D:\backups
deltree /y %1
goto end

:help
echo Geef een directorynaam op als bronlocatie.
goto end

:end

Verwijderd

Geef nog even aan welk OS je gebruikt zodat ik je topic titel kan aanpassen overeenkomstig de Windows Operating Systems - Policy

Verwijderd

Topicstarter
Windows XP
het commando (programma) MOVE, bijgeleverd met DOS, zou moeten doen wat je wilt.
Maar wat wil je precies eigenlijk? Alle map-inhoud (inclusief subdirectories?) verplaatsen naar een andere map?
Ja, maar er zitten geen subdirectories in die map.
In een eigen directory, of toch niet?
In een eigen directory ja
@echo off
if "%1"=="" goto help
xcopy /s %1\*.* D:\backups
deltree /y %1
goto end

:help
echo Geef een directorynaam op als bronlocatie.
goto end

:end

  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 10-04 15:24

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

code:
1
2
3
SET /P mapnaam=Geef de naam van de bronmap:
Robocopy %mapnaam% doeldir\%mapnaam% /MOVE
Set mapnaam=


Met "Set /p" wordt er gevraagd om een mapnaam. Deze mapnaam wordt opgeslagen in de variabele %mapnaam% Robocopy is te vinden in de resource kit van Windows. De robocopy regel met /MOVE optie zorgt ervoor dat de complete map verplaatst wordt naar de doeldir\%mapnaame%. Eventueel is met de optie "/Xd" nog op te geven dat de directory zelf niet verplaatst moet worden. (XD = eXclude Directory's)

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


Verwijderd

Question Mark schreef op dinsdag 22 maart 2005 @ 16:13:
code:
1
2
3
SET /P mapnaam=Geef de naam van de bronmap:
Robocopy %mapnaam% doeldir\%mapnaam% /MOVE
Set mapnaam=


Met "Set /p" wordt er gevraagd om een mapnaam. Deze mapnaam wordt opgeslagen in de variabele %mapnaam% Robocopy is te vinden in de resource kit van Windows. De robocopy regel met /MOVE optie zorgt ervoor dat de complete map verplaatst wordt naar de doeldir\%mapnaame%. Eventueel is met de optie "/Xd" nog op te geven dat de directory zelf niet verplaatst moet worden. (XD = eXclude Directory's)
en wat moet dan bij "mapnaam" in gevuld worden? dit zou een fullpath moeten zijn, maar dat gaat dan weer mis bij doelmap\%mapnaam%

ik begrijp dat je elke keer dezelfde map wil copieren...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
:: maak txt file count.txt met alleen een 0 in the txtfile.
:init
set sourceroot=c:\temp\
set sourcedir=test
set targetdir=c:\test\
for /f "tokens=1" %%a (count.txt) do set count=%%a

:: verhoog de counter
set /a count+=1
echo %count%>count.txt

:: check if target reeds bestaat
if exist %targetdir%%sourcedir%%count%\ goto error1
md %targetdir%%sourcedir%%count%

:: copy and delete if successful
xcopy %sourceroot%%sourcedir\*.* %targetdir%%soucedir%%count%\
if %errorlevel%==0 del %sourceroot%%sourcedir\*.*
goto :eof

:error1
Echo ending batch, target dir already exist.


zelf nog ff de juiste switches etc erbij zetten.

[ Voor 41% gewijzigd door Verwijderd op 23-03-2005 12:44 ]


  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 10-04 15:24

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

Verwijderd schreef op woensdag 23 maart 2005 @ 12:22:
[...]
Robocopy %mapnaam% doeldir\%mapnaam% /MOVE

en wat moet dan bij "mapnaam" in gevuld worden? dit zou een fullpath moeten zijn, maar dat gaat dan weer mis bij doelmap\%mapnaam%
Ligt natuurlijk aan de interpretatie van de Robocopy regel:

Robocopy C:\%mapnaam% E:\%Mapnaam% /Move

werkt al... deze regel gaat er echter vanuit dat de bronmap in de root van C staat, en de target de root van E is. Ben het eens dat het misschien iets duidelijker in het voorbeeld had gekund. Met bovenstaande 'aanpassing' werkt het script met 3 regels, zónder gebruik te maken van een counterfile

Maar goed, ook jouw voorbeeld gaat uit van voorgedefineerde target en source... Overigens ben ik persoonlijk zwaar fan van Robocopy O+ , maar dat off-topic.

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


Verwijderd

:) de counter is nodig omdat er telkens naar een andere map gekopieerd moet worden.

ik ben ook fan van robocopy, maar hier is het redelijk overbodig en zorgt alleen maar voor extra vertraging (het enige nadeel van robocopy)
Pagina: 1