Parser la sortie de la commande dir
Bonjour,
N'ayant pas accès facilement à la taille de gros fichiers, je souhaite utiliser la commande DIR avec exec pour extraire les informations et les exploiter en php.
Pour cela j'exécute la commande :
Code:
1 2 3 4 5 6 7 8
|
ob_start();
passthru("DIR \"".$chemin."\"",$statut);
$ligne_commande=ob_get_contents();
ob_end_clean;
//convertion du tableau depuis CP850 vers UTF8
$ligne_commande_tab=explode(PHP_EOL,$ligne_commande); |
Après avoir longuement cherché j'ai vu qu'il était nécessaire de convertir le codage des caractères de $retour depuis le CP850 vers l'UTF8.
Ensuite j'extrais les informations pour chaque ligne :
Code:
1 2 3
| $date=substr($ligne,0,17);
$taille=str_replace(" ","",trim(substr($ligne,17,19)));
$fichier=substr($ligne,36); |
J'ai peu d'erreurs mais parfois j'ai un décalage des noms de fichiers et de la taille : il manque un chiffre pour la taille et le nom du fichier parfois inclut les derniers entiers de la taille. Je ne comprends pas pourquoi sachant que la sortie de la commande DOS est toujours présentée avec le même nombre de caractères. De plus je ne parviens pas à supprimer les espaces pour les tailles des fichiers ??