Newsgroup: it.comp.lang.c
Titolo: directory,sottodirectory,file

Ciao a tutti,
vi espongo subito il problema:(uso Windows ) dopo un pò di tempo
dall'installazione inizia ad essere molto lento,la sua cartella inizia ad
occupare tantissimo spazio(magari file inutili provenienti da installazioni
di sharware etc..)
Volevo realizzare un programma che scrivesse in un file di testo tutti i
nomi dei files presenti nel sistema e la loro posizione.
Inoltre quando  il computer avrebbe iniziato a " gareggiare con le
tartarughe" ,avviando il programma  ,avrebbe lasciato nel disco fisso
soltanto i files nominati nel file di testo e cancellato tutti gli altri.
Potreste darmi qualche consiglio?
Ciao Marco

nomi dei files presenti nel sistema e la loro posizione.
Lancialo con 
filelog > logfile.txt
/* filelog.c            */
/* DJGPP                */
/* -------------------- */
/* Andrea Laforgia 1999 */
#include <stdio.h>
#include <dos.h>
#include <dir.h>
static unsigned dir_level = 0 ;
static unsigned dir_count = 0 ;
int is_valid_directory( struct find_t dir_info )
{
    return ( ( dir_info.attrib & _A_SUBDIR ) &&
 
dir_info.name
[0] != '.' ) ;
}
void scan_tree( const char * dir )
{
     struct find_t dir_info ;
     unsigned result ;
     char buffer [MAXPATH] ;
     chdir( dir ) ;
     getcwd( buffer, MAXPATH ) ;
     ++dir_level ;
     ++dir_count ;
     result = _dos_findfirst( "*.*", _A_SUBDIR, &dir_info ) ;
     while ( ! result )
     {
           if ( is_valid_directory( dir_info ) )
              scan_tree( 
dir_info.name
 ) ;
           else
           if ( 
dir_info.name
[0] != '.' )
           {
              printf( "%s/%s\n", buffer, 
dir_info.name
 ) ;
           }
           result = _dos_findnext( &dir_info ) ;
     }
     if ( --dir_level ) chdir( ".." ) ;
}
int main( void )
{
   char buffer [MAXPATH] ;
   getcwd( buffer, MAXPATH ) ;
   scan_tree ( "\\" ) ;
   chdir( buffer ) ;
   return 0 ;
}
--
Andrea Laforgia
andrea_...@bigfoot.com

 Potreste darmi qualche consiglio?
Si, lascia perdere.
A meno che il programma non sia anche tanto furbo da modificare il file
registro di conseguenza, rischieresti di non poter piů riavviare il PC. (per
non essere cosě tragici, di dover reinstallare windows)
Cerca invece di usare pannello di controllo->installazione applicazioni per
eliminare i programmi che non usi piů, di usare regolarmente scandisk, di
usare le installazioni personalizzate ed eventualmente di eliminare per
primi i file di testo (occupano poco spazio ognuno, ma hai idea di quanti
siano?)
Solo nella directory di windows ci sarebbero una marea di files che potresti
eliminare per sempre senza mai acorgerti della loro mancanza, ma devi prima
sapere quello che fai.
--
Alessandro Monti


Non sarebbe una grande idea, non ti basta cancellare i file per
tornare alla velocita' che avevi quando hai installato win pulito,
avresti un sacco di problemi con le applicazioni registrate, programmi
non trovati, e cosi' via. Posso solo consigliarti di non installare e
poi disinstallare software che non ti serve: la disinstallazione non
e' pulita come dovrebbe essere e qualcosa rimane sempre (registri,
dll, ecc...) a meno di non usare dei programmi appositi che tengano
traccia di tutte, e dico _tutte_, le modifiche fatte dalle varie
installazioni.
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it


Ah, bei tempi del DOS ;)!!
Per questa parte della tua domanda puoi aprire una finestra DOS e scrivere
cd\
dir *.* /s >files.txt
e ti troverai un file "files.txt" con elenco e posizione di tutti i file del
tuo HD
Comunque il rallentamento di windows non č dovuto tanto alla presenza dei
file su HD, per cui cancellandoli incasineresti tutto e basta. Il problema č
nel registro di sistema che si appesantisce, e non puoi certo andare a
cancellare le cose " a sentimento"
Puoi usare l'utility regclean oppure dopo aver riavviato in DOS (ancora!)
scrivere SCANREG /FIX
  Purtroppo oltre un certo livello di incasinamento non ti rimane altro che
riformattare
Saluti, Andrea

Un'altra soluzione carina sarebbe usare le Norton Utilites (non per fare la
pubblicità , ma funzionano bene!).
A me sono servite...

 Se non sbaglio il registro risiede nei file system.dat ed user.dat
Sarebbe sufficiente fare una copia di questi file prima dell'installazione
dei programmi che non dispongono di un unistall.
Marco.

 dei programmi che non dispongono di un unistall.
Esatto, ma questa è un'operazione che devi fare preventivamente e per ogni
programma che installi. Hai guardato le dimensioni?
Il mio consiglio, invece, era semmai di aumentare un poco la complessità del
programma in modo da riuscire anche ad aggiustare il registry, o almeno di
riuscire a controllarne solo le differenze in termini di chiavi aggiunte,
tolte o modificate, invece di salvare l'intero registro.
Inoltre considera che se hai più utenti definiti sotto windows, potresti
avere più copie del registro...
Ciao
--
Alessandro Monti