[Pascal] Lijst met mappen maken

Pagina: 1
Acties:

  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Ik wil in turbo pascal een DOS-programma maken om temporary internet files van je PC te verwijderen. Hiervoor moet ik echter de submappen van "c:\documents and settings" kunnen uitlezen. Ik heb echter geen flauw idee hoe dit moet. Ik vind enkel Pascal commando's om bestanden te zoeken, niet voor mappen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
een map is ook een bestand. (Zei het met een speciaal attribuut)

[ Voor 41% gewijzigd door whoami op 02-09-2003 14:29 ]

https://fgheysels.github.io/


  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

Waarom in Pascal en niet gewoon een Win32 console appje schrijven?

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Wat je wil kan niet, botweg omdat de temporary internet files folder geen vaste gegarandeerde locatie is.

Correct methode is om via de Win32 API-call SHGetFolderPath de locatie van CSIDL_INTERNET_CACHE op te vragen.

Professionele website nodig?


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Ik ga het programma runnen van een DOS opstart-CD, dus daarom niet de methode van limoentje en curry684. Ik ga controleren of de bestanden op de standaard-locatie staan en zoja verwijderen. Zonee, dan worden ze niet verwijderd.

  • Master__R
  • Registratie: September 2002
  • Laatst online: 20-08 19:39
Dan kan het toch ook via een .BAT bestandje?

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Idd.
Gewoon een deltree /y doen van die folder die normaal op die plaats moet staan die jij wilt verwijderen.

https://fgheysels.github.io/


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Master__R schreef op 02 September 2003 @ 14:36:
Dan kan het toch ook via een .BAT bestandje?
Dat heb ik geprobeerd: [rml][ DOS BATCH] alle mappen overlopen[/rml]

Niemand die de DOS-commando's wist om door de mappen te lopen. Dus zal er een DOS-programma geschreven moeten worden. Probleem is dat ik enkel ervaring heb met proggen in Windows, dus dat is nog niet zo eenvoudig.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Ik ga controleren of de bestanden op de standaard-locatie staan en zoja verwijderen. Zonee, dan worden ze niet verwijderd.
Er is geen standaardlocatie, dat varieert per Windows-versie en useraccount. Het kan dus nogmaals alleen betrouwbaar via de daarvoor geeigende Shell-functies.

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Kun je me nog eens langzaam uitleggen waarom je dit perse via de hopeloze omweg wil doen van een DOS-startup-CD met NTFS patching ipv simpelweg een programmaatje dat native onder Windows draait? :?

Professionele website nodig?


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
curry684 schreef op 02 september 2003 @ 14:40:
[...]

Er is geen standaardlocatie, dat varieert per Windows-versie en useraccount. Het kan dus nogmaals alleen betrouwbaar via de daarvoor geeigende Shell-functies.
Ik maak gewoon volgende map leeg:
c:\documents and settings\<username>\local settings\temporary internet files

Daar kan ik niets verkeerd mee doen. Niemand gaat in die map belangrijke bestanden plaatsen, en zoja, dan hebben ze pech :)

Ik moet dus enkel een script hebben om die <username> te bepalen, met andere woorden alle submappen van c:\documents and settings

  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
curry684 schreef op 02 September 2003 @ 14:43:
Kun je me nog eens langzaam uitleggen waarom je dit perse via de hopeloze omweg wil doen van een DOS-startup-CD met NTFS patching ipv simpelweg een programmaatje dat native onder Windows draait? :?
Ik wil een bootable-DOS-CD maken die ik maar gewoon in een PC moet duwen en die dan alle virussen verwijderd. Soms werkt een PC met een virus zo slecht dat je hem amper nog kan opstarten.

Nu is het mij gelukt om zo'n CD te maken en hij werkt. Het enige probleem is dat het scannen nogal lang duurt omdat hij veelt tijd steekt in het scannen van temporary internet files. Bij mensen met een grotere harde schijf neemt dit nogal veel plaats in beslag. En daarom wil ik die bestanden verwijderen net voordat de virusscanner zijn werk doet.

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

Met het FOR commando zou je toch gewoon alle userdirs door kunnen lopen (onder \Documents & Settings\), en dan in alle usermappen proberen de Temp. Inet Files te verwijderen?

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
FOR werkt enkel in Windows-console, niet onder DOS :(

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 23:48

The Eagle

I wear my sunglasses at night

WimB schreef op 02 September 2003 @ 14:48:
[...]

Ik wil een bootable-DOS-CD maken die ik maar gewoon in een PC moet duwen en die dan alle virussen verwijderd. Soms werkt een PC met een virus zo slecht dat je hem amper nog kan opstarten.

Nu is het mij gelukt om zo'n CD te maken en hij werkt. Het enige probleem is dat het scannen nogal lang duurt omdat hij veelt tijd steekt in het scannen van temporary internet files. Bij mensen met een grotere harde schijf neemt dit nogal veel plaats in beslag. En daarom wil ik die bestanden verwijderen net voordat de virusscanner zijn werk doet.
Als je dan slim bent verwijder je je die bestanden even in safe modus voordat je boot met die CD. Of je gebruikt gewoon een handmatig commando, en start de scanner daarna met de hand op

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
The_Eagle schreef op 02 september 2003 @ 15:12:
[...]


Als je dan slim bent verwijder je je die bestanden even in safe modus voordat je boot met die CD. Of je gebruikt gewoon een handmatig commando, en start de scanner daarna met de hand op
Zo doe ik het tot hiertoe. Maar ik wil sneller kunnen :p

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

WimB schreef op 02 september 2003 @ 15:05:
FOR werkt enkel in Windows-console, niet onder DOS :(
Bij mijn weten zit er al sinds DOS 2 of 3 een FOR commando in :)
Misschien niet zo uitgebreid als de Windows NT/9x versie, but hey, it's a start.

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Sorry hoor, maar als je windows zo erg verbaggert is door een (of meerdere) virus(es), dan is het misschien toch wel veel nuttiger om eens te formatteren. Persoonlijk zou ik eerder backups maken, clean win install, en dan decent scannetje over al die backups heen...

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 00:12

Tomatoman

Fulltime prutser

WimB schreef op 02 September 2003 @ 14:44:
[...]

Ik maak gewoon volgende map leeg:
c:\documents and settings\<username>\local settings\temporary internet files

Daar kan ik niets verkeerd mee doen. Niemand gaat in die map belangrijke bestanden plaatsen, en zoja, dan hebben ze pech :)

Ik moet dus enkel een script hebben om die <username> te bepalen, met andere woorden alle submappen van c:\documents and settings
Dat kan wel degelijk verkeerd gaan.
  • Ten eerste heet de map 'Documents and Settings' per Windowsversie anders.
  • Ten tweede mag je de harddrive C: niet hard encoden. WinXP staat bij mij op D:.
  • Ten derde wordt de map 'Documents and Settings' bij onder meer Duitstalige XP-versies vertaald (ik geloof dat hij daar 'Dokumenten und Anlagen' heet).
  • Ten vierde kan het zijn dat de bestanden die je wilt wissen als read-only gemarkeerd zijn of misschiens verbiedt NTFS je zelfs om de bestanden te benaderen.

Een goede grap mag vrienden kosten.


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 00:12

Tomatoman

Fulltime prutser

Nog even een tip. Misschien heb je nog ergens de good old Norton Commander op een floppy. Dan kun je heel comfortabel onder DOS kijken hoe de mappenstructuur in elkaar zit en alleen die bestanden wissen die je ook echt kwijt wilt. Bedenk wel dat de fysieke mappenstructuur onder Windows verborgen blijft. Onder DOS zul je een of meer mappen tegenkomen met namen zoals

C:\Documents and Settings\<username>\Local Settings\Temporary Internet Files\OLK1F

Een goede grap mag vrienden kosten.


Verwijderd

Zoiets:

code:
1
2
3
4
5
6
7
8
9
10
11
12
uses Dos;

var
 DirInfo: SearchRec;
begin
 FindFirst('C:\Docume~1\*.*', Directory, DirInfo);
 while DosError = 0 do
 begin
   Writeln(DirInfo.Name);
   FindNext(DirInfo);
 end;
end.

[ Voor 6% gewijzigd door Verwijderd op 02-09-2003 19:42 ]


  • slm
  • Registratie: Januari 2003
  • Laatst online: 25-06 12:45

slm

Staat gewoon in je set-variabelen hoor:

HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\inlognaam

En pascal is wel héél erg lang geleden, maar ik kon dit nog vinden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function GetDirs(const Path: PathStr):pathstr;
var S,c: PathStr;
function GetChildren(const Path: PathStr):pathstr;
  var S: SearchRec;
  begin
  FindFirst(Path + '\*.*', anyfile, S);
  while DosError = 0 do
    begin
    if (S.Attr and Directory <> 0) and (S.Name[1] <> '.') then
    begin
    findfiles(path+'\'+s.name);c:=GetChildren(Path + '\' + S.Name);
    end;
    FindNext(S);
    end;
  end;
begin
S := Path;
findfiles(thisdir[1]+':');
if S[Length(S)] = '\' then Dec(S[0]);
getchildren(s);
end;

To study and not think is a waste. To think and not study is dangerous.


  • marcelk
  • Registratie: December 2000
  • Niet online
slm schreef op 02 September 2003 @ 19:37:
Staat gewoon in je set-variabelen hoor:

HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\inlognaam

....

[/code]
Maar die zijn onder DOS weer niet beschikbaar.

  • slm
  • Registratie: Januari 2003
  • Laatst online: 25-06 12:45

slm

daar heb je helemaal gelijk in...

zul je helaas toch een filesearch moeten doen.

To study and not think is a waste. To think and not study is dangerous.


  • PipoDeClown
  • Registratie: September 2000
  • Niet online

PipoDeClown

Izze Zimpell

ik vond dit http://www.ericphelps.com/batch/registry/ReadingRegistry.zip
gaat over win98 en ik denk niet dat je voor winnt een regedit kunt vinden die onder dos draait.
code:
1
2
3
4
5
6
7
8
9
@echo off
start /w regedit /e userdata.reg HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\ComputerName\ComputerName
type userdata.reg | find """ComputerName""" > userdata.bat
del userdata.reg > nul
echo set ComputerName=%%1>ComputerName.bat
call userdata.bat
del userdata.bat > nul
del ComputerName.bat > nul
echo Local ComputerName is %ComputerName%
dit is maar een voorbeeldje

[ Voor 9% gewijzigd door PipoDeClown op 03-09-2003 20:20 ]

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.

Pagina: 1