Verification - Shell/Batch - Programmation
Marsh Posté le 27-04-2006 à 21:06:57
Si c'est sous Unix en ksh (bash aussi je suppose), alors faire
if ! [ -f "nom_fichier" ] ; then |
Si c'est pour Windows, alors utiliser le script VBS suivant :
Set fso = CreateObject("Scripting.FileSystemObject" ) |
Marsh Posté le 27-04-2006 à 21:46:57
Il me semble qu'il n'y a pas besoin de VBS pour windows :
Code :
|
Marsh Posté le 28-04-2006 à 10:31:22
olivthill a écrit : Si c'est sous Unix en ksh (bash aussi je suppose), alors faire
|
Il y a deux erreurs
1) le point d'exclamation doit être dans les crochets et non en dehors (il fait intégralement partie des options de la commande "test" dont les crochets en sont un synonyme)
2) l'option "-f" de test vérifie que le fichier est un fichier régulier (le test renverra "inexistant" si "nom_fichier" est un répertoire, ou un socket, etc...). L'option "existence" de test en bash se fait avec "-e"
=>
if [ ! -e "nom_fichier" ] ; then |
Le pb est que l'option "-e" n'est présente qu'en bash. Si tu bosses sur des systèmes plus vieux style sh ou ksh, t'es coinçé => solution: utiliser "ls" et vérifier le code d'erreur
ls -d "nom_fichier" 1>/dev/null 2>&1 |
Marsh Posté le 02-05-2006 à 11:11:03
Sve@r a écrit : le point d'exclamation doit être dans les crochets et non en dehors (il fait intégralement partie des options de la commande "test" dont les crochets en sont un synonyme) |
Suite à un MP d'olivthill me disant que le point d'exclamation en dehors du test était accepté en ksh, j'ai testé et, effectivement, en ksh (comme en bash ou en ash) il est autorisé d'inverser le résultat booléen d'une commande en la faisant précéder d'un point d'exclamation.
Mais faut pas confondre le point d'exclamation placé devant une commande (par exemple "test" mais pas forcément) et le point d'exclamation placé dans la commande "test" => même si les deux font la même chose, le premier inverse la commande quelle qu'elle soit (ex: if ! false; then echo ok; fi) et le second est une instruction spécifique à "test" pour inverser l'expression logique placée dans le test
Merci à olivthill - C'est toujours agréable d'apprendre qqchse de nouveau
Marsh Posté le 27-04-2006 à 20:09:46
Hello !
Comment faire pour vérifier par un batch si un fichier existe ???
Merci !