Come si puo fare uno script che va a vedere che file ci sono in una cartella e poi salvi la lista su file di testo![]()
Grazie mille per gli aiuti![]()
Come si puo fare uno script che va a vedere che file ci sono in una cartella e poi salvi la lista su file di testo![]()
Grazie mille per gli aiuti![]()
per la ricerca dei fileCodice PHP:
$fp = fopen('lista_file.txt', 'w');
fwrite($fp, implode("\r\n", glob('*.*')));
fclose($fp);
http://it.php.net/manual/it/function.glob.php
per la scrittura su file
http://it.php.net/manual/it/function.fopen.php
se vuoi anche andare in sottodirectory... tempo fa mi ero fatto sta funzioncina
puoi tranquillamente adattarla per farti restituire una lista formattata come meglio crediCodice PHP:
function dir_tree_full($path='.')
{
//contatore statico che indica la profondità del nodo correntemente analizzato
static $deep;
if(!($dir = opendir($path))) return 0;
while($file = readdir($dir))
{
//se il file letto è diverso da '.' e '..'
if(($file != '.') && ($file != '..'))
{
//stampo dei caratteri di indentazione della direcrory corrente in base alla pofondità del nodo
for($j=0;$j<$deep;$j++) echo "----";
echo "$file
";//stampo il nome del file o della directory
if(is_dir("$path/$file"))//se il file è una directory devo entrarvi ed analizzarla
{
$deep++;//scendo di un livello
dir_tree_full("$path/$file");//stampo l'albero della dir appena trovata
}
}
}
closedir($dir); //chiudo la dir
//torno ad analizzare il livello superiore
$deep--;
return 1;
}
Grazie mille a tutti e 2!!
è proprio quello che volevo!!!!
EDIT
Scusate di nuovo il mio disturbo,ma non so perchè non riesce a scrivermi nel file di testo i valori passati dalla ricerca nella cartella,mi riesce a scrivere solo testo semplice ma mi da errore quando tento di fargli scrivere il contenuto di una variabile
Qua il codice
Ecco,lui mi scrive gli spazie e ciao ma niente della varibile $file e mi genera anche errore,perchè?Codice PHP:
<?php
$dir = "D:\prova";
//leggo il contenuto
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "$file
" . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}
//scrivo su file
$filename = 'C:\Programmi\Apache Group\Apache2\htdocs\lista_file.txt';
$somecontent = "$file ciao";
// Verifica che il file esista e sia riscrivibile
if (is_writable($filename)) {
// In questo esempio apriamo $filename in append mode.
// Il puntatore del file è posizionato in fondo al file
// è qui che verrà posizionato $somecontent quando eseguiremo fwrite().
if (!$handle = fopen($filename, 'a')) {
echo "Non si riesce ad aprire il file ($filename)";
exit;
}
// Scrive $somecontent nel file aperto.
if (!fwrite($handle, $somecontent) ===FALSE) {
echo "Non si riesce a scrivere nel file ($filename)";
exit;
}
echo "Riuscito, scritto ($somecontent) nel file ($filename)";
fclose($handle);
} else {
echo "Il file $filename non è accessibile";
}
?>![]()
Nessuno sa come fare per far eseguire la scrittura degli argomenti della variabile senza generare errori?![]()
L'errore che a me mi da è quello relativo al cercare di scrivere i dati
Lo script che hai indicato, senza aver seguito nessuno degli esempi che ti sono stati proposti, così come si trova non riuscirebbe a scrivere nulla oltre a "ciao". Questo perchè la variabile $file è limitata all'interno del ciclo while. Qualora venisse modificato per rendere accessibile la variabile $file anche all'esterno del ciclo, oltre al nome dei file ti scriverebbe anche gli indici delle directory, cioè . e ..
Comunque, queste sono le modifiche da apportare al codice.
Sostituisci il while col codice che segue. E' necessario aggiungere un controllo per evitare di recuperare anche i nodi relativi alle cartelle, quella principale e le relative. Poi bisogna raggruppare i valori recuperati dalla ricerca in un array...
riscrivi la variabile $somecontent per permetterle di scrivere effettivamente i valori recuperati precedentemente in $filesCodice PHP:
while (($file = readdir($dh)) !== false) {
if($file != '.' && $file != '..') {
echo "$file
" . filetype($dir . $file) . "\n";
$files[] = $file;
}
}
alla fine, sostituisciCodice PHP:
$somecontent = implode("\r\n", $files);
conCodice PHP:
if (!fwrite($handle, $somecontent) ===FALSE)
Codice PHP:
if (!fwrite($handle, $somecontent))
Scusa ma sono poco esperto di php e lo uso pochissimo,
comunque il codice io l'ho modificato come mi hai detto però non mi funzia più![]()
Ecco come l'ho modificato
Codice PHP:
<?php
$dir = "D:\prova";
//leggo il contenuto
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if($file != '.' && $file != '..') {
echo "$file
" . filetype($dir . $file) . "\n";
$files[] = $file;
}
}
}
//scrivo su file
$filename = 'C:\Programmi\Apache Group\Apache2\htdocs\lista_file.txt';
$somecontent = implode("\r\n", $files);
// Verifica che il file esista e sia riscrivibile
if (is_writable($filename)) {
// In questo esempio apriamo $filename in append mode.
// Il puntatore del file è posizionato in fondo al file
// è qui che verrà posizionato $somecontent quando eseguiremo fwrite().
if (!$handle = fopen($filename, 'a')) {
echo "Non si riesce ad aprire il file ($filename)";
exit;
}
// Scrive $somecontent nel file aperto.
if (!fwrite($handle, $somecontent)) {
echo "Non si riesce a scrivere nel file ($filename)";
exit;
}
echo "Riuscito, scritto ($somecontent) nel file ($filename)";
fclose($handle);
} else {
echo "Il file $filename non è accessibile";
}
?>
Guarda che i percorsi che stai indicando difficilmente li utilizzerai online. Se è solo per fare dei test in locale, va bene. Altrimenti dovrai indicarli diversamente.
Comunque, devi aggiungere uno slash al percorso indicato nella variabile $dir
$dir = "D:/prova/";
e poi ti manca una parentesi graffa } alla fine.
Si sto testando tutto in locale,però con i tuoi accorgimenti non mi funziona lo stesso![]()
Posso chiederti di postarmi il codice esatto se non è un disturbo per te?
Grazie mille comunque degli aiuti che mi stai dando![]()
Credevo di averti detto quali modifiche apportare. Cos'altro ti manca?
Se dici "non funziona" è difficile aiutarti perchè non significa nulla. Che errore ricevi?