5 Submappen kopieren naar 1000 mappen

Status
Niet open voor verdere reacties.

JHM Wetzelaer

Gebruiker
Lid geworden
14 jan 2005
Berichten
80
Misschien een heel domme vraag en misschien ook niet specifiek voor dit forum, maar handmatig kost mij dit ontzettend veel tijd!!

Weet iemand hoe ik vier (nog lege) submappen (Aanstelling, Trainingen, Bezwaren, Diversen) snel kan kopiëren in ongeveer 1000 personeelsdossiers (Hoofdmappen)?

Alvast bedankt voor jullie tips
 
Heb jij een lijst met namen waarin deze mapjes dan moeten komen?

Een voorbeeld scriptje kan dan zijn;

Code:
cd d:\dossiers\ 
cd piet
mkdir "aanstelling"
mkdir "training"
mkdir "bezwaren"
mkdir "diversen"

cd d:\dossiers\ 
cd jan
mkdir "aanstelling"
mkdir "training"
mkdir "bezwaren"
mkdir "diversen"

etc
 
Laatst bewerkt:
Begrijp ik het goed dat dit script dan geschreven dient te worden voor 1000 personen (ook nogal veel werk, lijkt mij)?

En hoe voer ik dit script vervolgens uit? (ik ben maar een leek!!)
 
Maak een .txt bestand (gebruikers.txt) met al die 1000 gebruikers erin, op elke regel 1 gebruiker. Zet die in die hoofmap waar je die submappen wilt hebben.
Zet in diezelfde hoofdmap een batchbestand (maakmap.bat) met de volgende inhoud:
Ik ga er hier vanuit dat ook die basismappen Aanstelling, Bezwaren, Training en Diversen óók in die hoofdmap staan, anders de copy commando´s aanpassen (de bronmap aanpassen in dat geval).

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (gebruikers.txt) do (
mkdir %%a
mkdir %%a\Aanstelling
copy /y Aanstelling %%a\Aanstelling
mkdir %%a\Training
copy /y Training %%a\Training
mkdir %%a\Bezwaren
copy /y Bezwaren %%a\Bezwaren
mkdir %%a\Diversen
copy /y Diversen %%a\Diversen
)
echo Klaar
Pause

Voer maakmap.bat uit door erop te dubbelklikken.

Succes,

Tijs.
 
Laatst bewerkt:
Ik heb het geprobeerd, maar het wilt niet lukken.
Het bestandje maakmap.bat luidt nu als volgt (pad als volgt aangepast) :

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%C\Users\Jo Wetzelaer\Desktop\Website4\ in (gebruikers.txt) do (
mkdir %%C\Users\Jo Wetzelaer\Desktop\Website4\
mkdir %%C\Users\Jo Wetzelaer\Desktop\Website4\Aanstelling
copy /y Aanstelling %%C\Users\Jo Wetzelaer\Desktop\Website4\Aanstelling
mkdir %%C\Users\Jo Wetzelaer\Desktop\Website4\Training
copy /y Training %%C\Users\Jo Wetzelaer\Desktop\Website4\Training
mkdir %%C\Users\Jo Wetzelaer\Desktop\Website4\Bezwaren
copy /y Bezwaren %%C\Users\Jo Wetzelaer\Desktop\Website4\Bezwaren
mkdir %%C\Users\Jo Wetzelaer\Desktop\Website4\Diversen
copy /y Diversen %%C\Users\Jo Wetzelaer\Desktop\Website4\Diversen
)
echo Klaar
Pause
 
Van je batch-bestand klopt niet veel.

Dus nog een keer:
1. Je moet een bestand hebben met al die 1000 namen erin (gebruikers.txt, elke naam op een eigen regel)
2. Gebruikers.txt en maakmap.bat moeten in de map staan waar al die 1000 gebruikers hun eigen submap hebben.
3. Wat je waarschijnlijk bedoelt is 4 submappen van "C:\Users\Jo Wetzelaer\Desktop\Website4" te kopiëren in elk van die 1000 mappen.
Dat zou dan zo moeten in maakmap.bat:
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (gebruikers.txt) do (
mkdir %%a
mkdir %%a\Aanstelling
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Aanstelling" %%a\Aanstelling
mkdir %%a\Training
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Training" %%a\Training
mkdir %%a\Bezwaren
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Bezwaren" %%a\Bezwaren
mkdir %%a\Diversen
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Diversen" %%a\Diversen
)
echo Klaar
Pause

Succes,

Tijs.
 
Tijs, ik zal het wel niet snappen.
De uitkomst is in ieder geval vrij ??!!
Ik krijg allerhande mappen erbij, waarmee ik niets kan.

De beide bestandjes heb ik toegevoegd (het maakmap bestandje heb ik eerst weer omgezet in een .txt bestand).

m.v.gr.

Jo
 

Bijlagen

  • gebruikers.txt
    47,6 KB · Weergaven: 118
  • maakmap.txt
    500 bytes · Weergaven: 34
Je moet niet een lijst met achternamen, voornamen etc. hebben maar een lijst met slechts 1 ding per regel, namelijk de submapnaam die voor die gebruiker gemaakt is.

Stel dat de de hoofdmap van de D: schijf de 1000 mappen bevat, dan zou je als volgt een lijst kunnen samenstellen (de mappen die er niet bij horen er na afloop uithalen):
[Windows-toets]r toetscombinatie -> cmd /c dir /a:d /b /o:n D:\ > C:\gebruikers.txt
Je ziet geen uitvoer, want die staat in C:\gebruikers.txt

Pas D:\ aan naar het juiste pad, voer het commando uit en bekijk wat C:\gebruikers.txt bevat, zodat je een idee hebt hoe je evt. het dir commando in mijn verhaal zou moeten aanpassen.

Succes,

Tijs.
 
Laatst bewerkt:
Ja,Ja??!!

Helaas hebben we deze mappen als onze personeelsdossier (naam, voorletters, geb. datum) en had ik gedacht op een eenvoudige manier submappen in al deze personeelsdossiers aan te maken (de aangegeven namen van submappen waren enkel bedoeld al voorbeeld). Jammer, helaas, ik vrees dus dat ik toch e.e.a.handmatig kom te doen. Toch bedankt en een voorspoedig jaar toegewenst.

m.vr.gr.

Jo Wetzelaer
 
Als jouw gebruikers.txt de mapnamen bevat waar die submappen onder gezet moeten worden, dan zul je de alle parameters die mapnamen voorstellen tussen "-tekens moeten zetten (vanwege de spaties die in de mapnaam voorkomen).

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (gebruikers.txt) do (
mkdir "%%a"
mkdir "%%a\Aanstelling"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Aanstelling" "%%a\Aanstelling"
mkdir "%%a\Training"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Training" "%%a\Training"
mkdir "%%a\Bezwaren"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Bezwaren" "%%a\Bezwaren"
mkdir "%%a\Diversen"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Diversen" "%%a\Diversen"
)
echo Klaar
Pause

Succes,

Tijs.
 
@Tijs, je doet een mkdir "%%A"
zelf zou ik hem om eventuele foutmeldingen te omzeilen door middel van een if not exist checken op aanwezigheid (ervan uitgaande dat er personeelsleden zijn zonder map)
 
@Ellasar: Natuurlijk kan dat, maar de vraagstelling van de topic-starter was niet duidelijk of de 1000 mappen al bestonden of niet.

@topicstarter: Indien je die check wilt invoeren, dan wordt het
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (gebruikers.txt) do (
if not exist "%%a\*.*" mkdir "%%a"
mkdir "%%a\Aanstelling"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Aanstelling" "%%a\Aanstelling"
mkdir "%%a\Training"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Training" "%%a\Training"
mkdir "%%a\Bezwaren"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Bezwaren" "%%a\Bezwaren"
mkdir "%%a\Diversen"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Diversen" "%%a\Diversen"
)
echo Klaar
Pause

Tijs.
 
@topicstarter: Als je wilt dat in alle reeds bestaande mappen die 4 submappen gemaakt worden kun je ook gebruik maken van de volgende code (er is dan geen gebruikers.txt bestand nodig die de bestaande of gewenste mappen bevat):

for /f "delims=" %%a in ('dir /a:d /b /o:n') do (
mkdir "%%a\Aanstelling"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Aanstelling" "%%a\Aanstelling"
mkdir "%%a\Training"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Training" "%%a\Training"
mkdir "%%a\Bezwaren"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Bezwaren" "%%a\Bezwaren"
mkdir "%%a\Diversen"
copy /y "C:\Users\Jo Wetzelaer\Desktop\Website4\Diversen" "%%a\Diversen"
)
echo Klaar
Pause

Succes,

Tijs.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan