[DOS BATCH] alle mappen overlopen

Pagina: 1
Acties:

  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Ik wil vanuit een DOS opstartCD alle temporary internetfiles van een PC kunnen verwijderen. Ik gebruik NTFS Pro om via DOS op een NTFS volume te kunnen.

Nu is het zo dat in Win2k/XP deze files staan in C:\docume~1\username\locals~1\tempor~1 waar username steeds anders is. Ik zou dus een DOS-batch script willen maken dat alle mappen (gebruikers) in C:\docume~1\ zoekt en in elke van deze mappen de submap \locals~1\tempor~1 leegmaakt.

Ik heb er echter geen flauw idee van hoe je in een batch script mappen kan overlopen. Ik heb via Google al heel wat scripts gevonden, maar deze maken gebruik van een FOR-lus. En dit laatste werkt blijkbarr enkel in Win2k/XP batch-scripts en niet onder DOS.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Batchscripts aub in het van toepassing zijnde OS-forum, in dit geval Windows Operated Systems. Moved :)

Professionele website nodig?


  • MichelVH
  • Registratie: Oktober 2001
  • Laatst online: 15-10-2025
ik heb ooit iets als c:\docume~1\*\locals~1\tempor~1 in een batch zien staan

Don't be afraid of the dark, be afraid of what it hides


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
TheDark schreef op 23 augustus 2003 @ 12:08:
ik heb ooit iets als c:\docume~1\*\locals~1\tempor~1 in een batch zien staan
Als ik dat probeer krijg ik:
De syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist.

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Alle mappen doorlopen kan zo:

dir C:\docume~1\*.* /p/s

Maar hoe je dan die bepaalde submap verwijderd weet ik zo niet.

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 19-05 18:05
Waarom moet het persé in batch zijn? Mag het niet gewoon een programma zijn?
Waarom wil je dit trouwens via een opstartcd doen? Kan dat niet via een netwerkverbinding of opstartscript, lijkt mij handiger.

  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Het mag een programma zijn, maar ik heb niets om te proggen in DOS.
Ik gebruik deze opstartCD om een willekeurige PC te scannen op virussen. Als ik echter de temporary internet files mee laat scannen, duurt dit al snel 5 à 10 minuten langer. Vandaar dat ik wat tijd wilde winnen door eerst deze overbodige bestanden te verwijderen.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

edit:

Natuurlijk eerst naar de juiste dir gaan:
cd C:\docume~1


for /D %d in (*) do echo %d\locals~1\tempor~1

In een batch gebruik je trouwens %%d en vanaf de prompt (als test) %d.
En dan ipv. echo natuurlijk hetgeen je wilt doen: deltree (of rd) ;)

Maar ik weet niet zeker of met name de /D (voor directories) een geldige parameter is ondr puur DOS.

[ Voor 12% gewijzigd door F_J_K op 23-08-2003 12:33 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
F_J_K schreef op 23 August 2003 @ 12:31:
edit:

Natuurlijk eerst naar de juiste dir gaan:
cd C:\docume~1


for /D %d in (*) do echo %d\locals~1\tempor~1

In een batch gebruik je trouwens %%d en vanaf de prompt (als test) %d.
En dan ipv. echo natuurlijk hetgeen je wilt doen: deltree (of rd) ;)

Maar ik weet niet zeker of met name de /D (voor directories) een geldige parameter is ondr puur DOS.
Jou script doet het niet bij mij. Ik heb nu echter dit:
code:
1
for /R "C:\docume~1\" %%d in (.) do echo %%d

Het probleem is dat mijn script alle mappen INCLUSIEF alle subdirectories doorloopt, en dat is niet de bedoeling.

Verwijderd

Veranderin het register de plaats voor temp inet files naar een andere folder, en deze folder voor iedereen gebruiken.
Bijv,: c:\tempinet

Dan in je batch file

del c:\tempinet\*.*

oid

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Klopt; ik zie nu op robvanderwoude.com dat /D (als in geef alle directories) alleen in Windows >= NT5 zit.

Hmm. Misschien kan je het anders beter met een omweg doen; eerst dir /ad /b > temp.txt en dan die uitlezen. Volgens bovenstaande pagina werkt ook /F enkel in NTx maar kijk er even naar:
cd C:\docume~1\
dir /on /b /ad > tmp.txt
for /F "tokens=1,*" %d in (tmp.txt) do echo %d %e
als er long filenames voorkomen (en je dus een spatie kan verwachten).

cd dir /x /on /b /ad > tmp.txt
dir /on /b /ad > tmp.txt
for /F %d in (tmp.txt) do echo %d
als geen long filenames voorkomen (DOS dus).

(de variabele naam 'd' had ik trouwens gekozen voor d als in directory, maar dat maakt verder natuurlijk niets uit :+ )

Tempinet van te voren verplaatsen is trouwens een goed idee, maar ik kan me voorstellen dat dat niet altijd gaat bij een virusinfectie bij een ander :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Het lukt me maar niet om door het bestand te lopen. Het antwoord van F_J_K met die FOR werkt idd enkel onder WinNT/2k/XP. Ik heb op internet hetvolgende gevonden:
code:
1
2
3
4
5
6
7
8
9
10
11
:LOOP
 :: Continue looping until the entire file has been read
 aset LINEIN := Line(%LINENUM%,'tmp.txt')
 if "%LINEIN%" == "?" goto END
    :: Display the line, then pause
    echo Line #%LINENUM%: %LINEIN%
    pause
    aset LINENUM := %LINENUM% + 1
    goto LOOP

:END

Echter, de teller blijft bij mij steeds op 1 staan en het bestand wordt gewoonweg niet uitgelezen.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

[nieuwsgierig en misschien kan het worden aangepast]

Waar heb je dat stukje vandaan, en waar komt dat aset vandaan?

[/nieuwsgierig en misschien kan het worden aangepast]

Denk trouwens ook even over het gebruik van een Linux ipv Windows bootCD; die heeft veel meer mogelijkheden vwb. shell scripts en virusscanners zijn er ook zat van.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
F_J_K schreef op 23 August 2003 @ 17:51:
[nieuwsgierig en misschien kan het worden aangepast]

Waar heb je dat stukje vandaan, en waar komt dat aset vandaan?

[/nieuwsgierig en misschien kan het worden aangepast]
Ik heb dat ganse stukje gevonden op alt.dos.batch, maar het werkt van geen kanten :)
Denk trouwens ook even over het gebruik van een Linux ipv Windows bootCD; die heeft veel meer mogelijkheden vwb. shell scripts en virusscanners zijn er ook zat van.
Daar had ik nog niet aan gedacht. Mijn Linux-kennis is eerder beperkt. Kan je met Linux op NTFS?

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 19-05 18:05
Ja je kunt met Linux ook op NTFS komen. Dat wordt zelfs gebruikt om administrator passwords te omzeilen.

  • treslem
  • Registratie: Mei 2001
  • Laatst online: 19-05 17:58
Er bestaat een prg dat [sweep] heet, en wanneer je dat start met bv.

C:\Documents and Settings>\sweep del *.tmp zal hij vanaf de document directory alles weggooien, ook in de subdirren.

<dirlist>
SWEEP.COM 591 1-06-1988 12:00

Tis klein maar fijn :)

Als je het niet kan vinden moet je maar ff mailen


edit: typo
edit2: lees niet goed, weet niet of je dit in jouw geval kan gebruiken. Probben kan geen kwaad [imho]

[ Voor 21% gewijzigd door treslem op 25-08-2003 08:21 ]

La dolce vita - non farmi ridere


Verwijderd

ff geen zin om het uit te werken...
c:
cd c:\docume~1
for /f "tokens=ff tellen :) " %%a in ('dir /ad') do del c:\docume~1\%%a\locals~1\tempor~1\*.*

geen idee of de /f switch werkt in dos...

[ Voor 17% gewijzigd door Verwijderd op 25-08-2003 11:50 ]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Tellen is onmogelijk als je niet van te voren weet welke usernames er zijn, maar het is ook niet nodig: daar is de * erg handig voor.
F_J_K schreef op 23 augustus 2003 @ 13:24:
Volgens bovenstaande pagina werkt ook /F enkel in NTx maar kijk er even naar:
[....]
for /F "tokens=1,*" %d in (tmp.txt) do echo %d %e
geen idee of de /f switch werkt in dos...
Nee dus ;)

Sweep lijkt me trouwens geen goed idee: dan ben je opeens alle profielen kwijt :)

Ik ben bang dat je (zonder een eigen programmaatje te gaan maken) tegen de beperkingen van puur DOS zit aan te hikken. Een eigen programmaatje maken in iets als Pascal kan natuurlijk wel (als je dat kent), of zoals ik al zei Linux met NTFS support of iets als 4DOS - al is dat niet gratis en weet ik niet zeker of die het wel kan ;)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Ik heb nooit onder DOS geprogrammeerd. Ik heb wel wat ervaring met Visual Basic.

Kan ik ergens een freeware ontwikkelingsomgeving vinden om DOS-programma's te schrijven in Basic?

  • PipoDeClown
  • Registratie: September 2000
  • Niet online

PipoDeClown

Izze Zimpell

probeer het eens met 4dos (www.jpsoft.com) of programmeer iets in pascal (www.freepascal.org)

God weet alles, want hij is lid van de Mosad. To protect your freedom i will take that away from you. Mijn drankgebruik heeft ernstig te lijden onder mijn gezondheid.


Verwijderd

F_J_K schreef op 25 August 2003 @ 11:59:
[...]

Tellen is onmogelijk als je niet van te voren weet welke usernames er zijn, maar het is ook niet nodig: daar is de * erg handig voor.
tuurlijk is tellen wel mogelijk... het gaat namelijk om de output van dir /ad en het hoeveelste token de "username" is. maar ik begreep dat de * niet werkte...

dan is het dus voldoende om:

del c:\mydocu~1\*\locals~1\tempor~1\*.* te doen (edit: met de switch om ook de subdirs te verwijderen)

edit: overigens in freedos zit wel een for statement (http://www.freedos.org/)

[ Voor 20% gewijzigd door Verwijderd op 25-08-2003 12:55 ]


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Kan ik nog ergens aan MS QuickBasic geraken?

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Verwijderd schreef op 25 August 2003 @ 12:42:
tuurlijk is tellen wel mogelijk... het gaat namelijk om de output van dir /ad en het hoeveelste token de "username" is. maar ik begreep dat de * niet werkte...
Ah zo, ik begreep dat je met de hand tellen bedoelde. My bad :X

Maar met de * bedoelde ik trouwens niet mydocu~1\*\locals~1 maar "tokens=1,*" - het precieze aantal tokens is dan niet van belang (en je weet dat er >= 1 is met een spatie, namelijk All users).
Maar goed, dat werkt niet onder puur DOS
WimB schreef op 25 augustus 2003 @ 12:44:
Kan ik nog ergens aan MS QuickBasic geraken?
De compiler is nog steeds (c) Microsoft dus als je geen DOS versie hebt waar het bij kwam, kunnen we je op GoT niet aan een versie helpen :P
Maar er zijn ook share/freeware compilers voor: http://www.phys.uu.nl/~bergmann/compilers.html#MSDOS

Freedos icm. de diverse opties hierboven is inderdaad misschien ook een goede optie.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)

Pagina: 1