|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jun 2007
Messaggi: 191
|
[C Win32] programma per cercare determinati files...
vorrei creare un programma, batch, C o C++ se possibile che cerchi nel sistema la presenza di determinati files, e poi restistuisca un valore anche booleano, true o false...
ps. non sapevo se metetrlo qui o in programmazione, nel caso mi scuso... ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2002
Messaggi: 32712
|
Programmazione mi sembra più appropriata
![]()
__________________
| Front & Rear: Arbour 5.02 | Center: Arbour C.4 | Sub: Arbour S.10 | Ampli: Onkyo TX-SR607 | Video: Panasonic TX-L47DT50 | Recorder: TS-6600HD |
Sorgente Video: Raspberry PI & Openelec + QNAP TS-869L WD Red 4x4TB | Musica Liquida: Squeezebox Touch | Remote Control: Harmony One | |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Se vuoi farlo con un file batch devi appoggiarti a programmi tipo grep, altrimenti fai riferimento alle funzioni WIN32 (es. FindFirstFile, FindNextFile, etc).
Ovviamente dovrai scrivere una funzione in grado di "traversare" il cosiddetto directory tree. |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Jun 2007
Messaggi: 191
|
puoi spiegarmi nel dettaglio?
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Nel primo caso devi semplicemente passare i parametri da linea di comando corretti, nel secondo devi scrivere una funzione ricorsiva che passi da una directory all'altra attraversando tutto il sottoalbero e che faccia una scansione dei file contenuti nella directory corrente. Non è difficile, ma se non hai un po' di esperienza non è neanche banale... |
|
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Jun 2007
Messaggi: 191
|
tieni conto che la mia esperienza con il batch è con del, deltree, ren...quindi quasi nulla... quindi nel dettaglio il programma mi deve dire se un file c'è o meno...si può?
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Il programma deve esaminare una singola cartella o un albero di directory? Deve restituire TRUE o FALSE per ogni cartella o un unico valore booleano al termine della ricerca? |
|
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Jun 2007
Messaggi: 191
|
deve restituire un valore bool per ogni directory e se possibile non dire nulla se è false... e dovrebbe esaminare una directosy alla ricerca appunto del file...
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
|
|
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: Jun 2007
Messaggi: 191
|
guide in italiano non ce n'è?
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: Jun 2007
Messaggi: 191
|
si in effetti in inglese non trovo, nulla..vabbè lo tradurrò...in ogni caso grazie..mi ci metto e ti faccio sapere...
|
![]() |
![]() |
![]() |
#13 |
Member
Iscritto dal: Jun 2007
Messaggi: 191
|
scusa ma parla anche di findclose...che vuol dire..non è che potresti spigarmi in parole povere che è quella funzione?
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Scrivo un piccolo esempio didattico: Codice:
#include <windows.h> #include <stdio.h> int main() { WIN32_FIND_DATA ricerca; HANDLE h; // Apre la ricerca h = FindFirstFile("*.*", &ricerca); if (h != INVALID_HANDLE_VALUE) { // Prosegue la ricerca do if (GetFileAttributes(ricerca.cFileName) == FILE_ATTRIBUTE_DIRECTORY) printf ("Cartella: %s\n", ricerca.cFileName); else printf ("File: %s\n", ricerca.cFileName); while (FindNextFile(h, &ricerca)); // Chiude la ricerca FindClose(h); } else { printf("Errore %d\n", GetLastError ()); } } |
|
![]() |
![]() |
![]() |
#15 |
Member
Iscritto dal: Jun 2007
Messaggi: 191
|
è traducibile in C++ l'esempio?
|
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Se sei alle prime armi ti suggerisco di concentrare la tua attenzione sullo studio del linguaggio (sintassi di base, STL, funzionalità avanzate ma comunque standard, etc), la programmazione di sistema ti risulterà molto più semplice quando avrai acquisito delle basi più solide. È inutile cercare di far funzionare codice altrui se si hanno delle grandi (e più che giustificate, visto che hai appena iniziato) lacune... |
|
![]() |
![]() |
![]() |
#17 |
Member
Iscritto dal: Jun 2007
Messaggi: 191
|
le basi ci sono in C++ ma non in C, come avrai capito sono all'inizio, e tutti i parametri che necessitano printf e scanf mi sembrano più complòicati che utili, in C++ la cosa è più semplice...non trovi?
|
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
![]() Se il problema è rappresentato esclusivamente dalla gestione dell'I/O (parole grosse, per 2 stampe a video!) hai 2 alternative: 1) Sostituisci <stdio.h> con <cstdio> senza modificare altro 2) Sostituisci <stdio.h> con <iostream> ed usi gli stream al posto delle printf che ti risultano così indigeste |
|
![]() |
![]() |
![]() |
#19 |
Member
Iscritto dal: Jun 2007
Messaggi: 191
|
hai centrto in pieno, alcune cose non le capisco...come l'inclusione della libreria windows.h e i comandi per capurci in maiuscolo, inoltre dove studio il C++ non dicono niente a proposito di get e le sue funzioni...
|
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
È normale che libri sul C++ di carattere generale non trattino la programmazione di sistema, per quella ci sono testi specifici che andrebbero letti DOPO aver studiato e compreso a fondo TUTTI i costrutti di base (e magari anche qualcuno di quelli "avanzati"). Invertire le due fasi significa perdere tempo: una casa si costruisce dalle fondamenta, non dal tetto! ![]() Come avrai notato la documentazione ufficiale è disponibile (quasi sempre) solo in inglese, dunque se non conosci questa lingua andrai poco lontano... |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:09.