Avatar billede gf Nybegynder
28. juli 2004 - 22:35 Der er 21 kommentarer og
1 løsning

Slette indhold af mange mapper

Hej

På vores server har vi 200 mapper liggende, som vores elever får tildelt ved logon. Mapperne hedder e1 - e200. Hvordan kan man på en llet måde slette indholdet af alle disse mapper. Der må forventes, at der båder er filer og undermapper i mapperne.

Mvh Glenn
Avatar billede screem_brille Novice
28. juli 2004 - 22:50 #1
hmm kan du ikke lave en over mappe som de alle ligges ind i, og derefter søge på *.* markere dem og slette ? (virker kun hvis der ingen filer er som skal gemmes, og man selvfølgelig har administrator rettigheder)
Avatar billede gf Nybegynder
28. juli 2004 - 22:54 #2
Jo men på den måde får man jo ikke fjernet evt. undermapper

Mvh Glenn
Avatar billede screem_brille Novice
28. juli 2004 - 23:04 #3
Nej det har du jo faktisk ret i... Hmmm jeg tror jeg ville gøre noget andet, (jeg går ud fra i kører AD), oprette en OU kaldet elever, oprette et dir, f.eks elevers filer, og så markere samtlige elever i OUen, angive elevernes homepath til X: (så sharet bliver mappet til X: (i dette tilfælde)man kan markere samtlige brugere i en OU og angive deret homepath således \\server\share\%username% så opretter den selv et biblotek med brugerens navn
Avatar billede thesurfer Nybegynder
29. juli 2004 - 00:16 #4
Kunne man ikke bare "stille sige" i e-mappernes overmappe, og slette dem med "rd /S /Q e*", og derefter genopret dem via en loop, via en batch fil? :-)
Avatar billede thesurfer Nybegynder
29. juli 2004 - 00:17 #5
Skal undermapperne (dem i eX mapperne) genoprettes?
Avatar billede thesurfer Nybegynder
29. juli 2004 - 00:40 #6
Smid denne kode i en bat fil (f.eks. "fix.bat"), og placer den i mappen, hvor alle e-mapperne ligger:

@echo off
cls

rem *********
rem * "taeller" tæller hvor langt den er nået
rem *
rem * ret "AntalMapper" til det antal mapper, der skal oprettes
rem *********

set taeller=0
set AntalMapper=5

:slet
set /A taeller=taeller + 1
if exist "e%taeller%" rd /S /Q "e%taeller%"
if %taeller% == %AntalMapper% goto reset
goto slet


:reset
set taeller=0


:opret
set /A taeller=taeller + 1
md "e%taeller%"
if %taeller% == %AntalMapper% goto AfslutProgram
goto opret

:AfslutProgram


Tallet "5" er bare en test. Hvis du synes at det virker, erstat 5 med 200.

Grunden til at jeg bruger en loop, til at slette mapperne, er fordi den ikke accepterede wildcards (dvs; e* som betyder "alle der starter med 'e'")..
Avatar billede screem_brille Novice
29. juli 2004 - 00:50 #7
thesurfer, ja men på den måde sættes rettighederne ikke automatisk på de oprettede dirs, det sker når man opretter dem på den måde jeg skrev tidligere, og med 200 forskellige brugere er det ikke sjovt at sætte det manuelt på hver enkelt mappe :)
Avatar billede gf Nybegynder
29. juli 2004 - 09:21 #8
hej igen

lige for at præcisere. på HD'en g: ligger mapperne e1 til e200. disse mapper er delte og skal bibeholdes. ALT i mapperne skal slettes.

Mvh Glenn
Avatar billede screem_brille Novice
29. juli 2004 - 11:36 #9
ok, så er det nememste at gøre som jeg tidligere skrev (altså sætte home folder i profile uder brugernes profil, derved oprettes de med de rigtige rettigheder)
Avatar billede gf Nybegynder
29. juli 2004 - 12:51 #10
kan det ikke lade sig gøre via batfil metoden?

Mvh Glenn
Avatar billede screem_brille Novice
29. juli 2004 - 12:57 #11
Både og da bat filen IKKE sætter rettigheder, skal du selv gøre dette, og du kan nøjes med at skrive \\servernavn\sharenavn\%username% og den opretter selv bibliotekerne med de rette rettigheder, således at bruger 1 har kun adgang til sit eget bibliotek, osv.
Avatar billede gf Nybegynder
29. juli 2004 - 13:10 #12
kan man ikke bare slette "slet" og "opret" delene og få den til at gå ind i mapperne med cd "e%taeller%" og derefter slette alt og igen gå ud af mappen md cd..

Mvh Glenn
Avatar billede thesurfer Nybegynder
29. juli 2004 - 14:33 #13
Ret:

strPath = "D:\Temp\e_test" ' ret stien til mappem med "e"-mapperne, UDEN "\" til sidst

Gem koden i en .vbs fil (f.eks. "fix.vbs"):

'------------------------------------------------------------------
option explicit

dim strPath, objFSO, objFolder
dim objSletMappe, objSletFil

dim objOverMappe, overmappe

strPath = "D:\Temp\e_test" ' ret stien til mappem med "e"-mapperne, UDEN "\" til sidst

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPath)

' slet mapper i "e"-mapperne:
for each overmappe in objFolder.subfolders
set objOverMappe = objFSO.GetFolder(overmappe.Name)

    For Each objSletMappe In objOverMappe.SubFolders
      objFSO.DeleteFolder strPath & "\" & overmappe.Name & "\" & objSletMappe.Name,True
    Next
next

' slet filer i "e"-mapperne:
for each overmappe in objFolder.subfolders
set objOverMappe = objFSO.GetFolder(overmappe.Name)

    For Each objSletFil In objOverMappe.files
        objFSO.DeleteFile strPath & "\" & objOverMappe.Name & "\" & objSletFil.Name,True
    Next
next

set objFSO = nothing
set objFolder = nothing

msgbox "Kode udført" ' beskeden kan ændres eller fjernes

'------------------------------------------------------------------

Hvis du har et anti-virus program installeret, skal du give scriptet adgang til FileSystemObject.
Avatar billede thesurfer Nybegynder
29. juli 2004 - 14:35 #14
Koden kan også skrives sådan her:


'------------------------------------------------------------------
option explicit

dim strPath, objFSO, objFolder
dim objSletMappe, objSletFil

dim objOverMappe, overmappe

strPath = "D:\Temp\e_test" ' ret stien til mappem med "e"-mapperne, UDEN "\" til sidst

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPath)

for each overmappe in objFolder.subfolders
set objOverMappe = objFSO.GetFolder(overmappe.Name)

    ' slet mapper i "e"-mapperne:
    For Each objSletMappe In objOverMappe.SubFolders
      objFSO.DeleteFolder strPath & "\" & overmappe.Name & "\" & objSletMappe.Name,True
    Next

    ' slet filer i "e"-mapperne:
    For Each objSletFil In objOverMappe.files
        objFSO.DeleteFile strPath & "\" & objOverMappe.Name & "\" & objSletFil.Name,True
    Next
next

set objFSO = nothing
set objFolder = nothing

msgbox "Kode udført" ' beskeden kan ændres eller fjernes
'------------------------------------------------------------------


husk: strPath = "D:\Temp\e_test" ' ret stien til mappem med "e"-mapperne, UDEN "\" til sidst
Avatar billede gf Nybegynder
29. juli 2004 - 16:00 #15
Hej

det virker fint mapper + filer bliver slettet, men programmet når ikke frem til messageboksen det kommer en fejl i linie 18 adgang nægtet.

ellers supert. Kom lige med et svar

Mvh Glenn
Avatar billede thesurfer Nybegynder
29. juli 2004 - 16:05 #16
Her er et svar.

Jeg kan ikke teste (og finde fejlen), da jeg ikke har dit miljø (Windows 2000 server med dine rettigheder og mapper).

Scriptet kører fint hos mig. Altså må det være noget med rettighederne.
Avatar billede thesurfer Nybegynder
29. juli 2004 - 16:10 #17
Prøv at erstatte linierne, så det kommer til at se sådan ud:


'------------------------------------------------------------------
option explicit
on error resume next

og sådan:

if err then msgbox "Der var fejl:" & vbcrlf & vbcrlf & err.number & " - " & err.description
msgbox "Kode udført" ' beskeden kan ændres eller fjernes
'------------------------------------------------------------------
Avatar billede gf Nybegynder
29. juli 2004 - 16:12 #18
mystisk, jeg er administrator på serveren.

Men mange tak for hjælpen msg boksen kan jeg godt undvære

Mvh Glenn
Avatar billede gf Nybegynder
29. juli 2004 - 16:16 #19
on error resume next løste problemet

tak Glenn
Avatar billede thesurfer Nybegynder
29. juli 2004 - 16:17 #20
Det skal lige siges, at fejlen stadig opstår.. men nu kan den fortsætte.
Hvis du ikke vil ha' nogen meldinger, kan du enten slette "msgbox"-linierne helt, eller kommentere dem, så de ikke afvikles (sæt et ' tegn foran linien).

Takker for points.
Avatar billede gf Nybegynder
29. juli 2004 - 16:24 #21
ok tak ved ikke lige hvad fejlen består i da scriptet tilsyneladende køres igennem

Glenn
Avatar billede screem_brille Novice
29. juli 2004 - 18:32 #22
gf du er ved at opfinde den dybe tallerken engang til, featuren ligger jo allerede i serveren, men ok det er dit valg, jeg dropper ud af samtalen da du alligevel vil lave det på den mest besværlige måde.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester