Test sur le contenu d'un répertoire.

Fermé
richy - 8 nov. 2022 à 10:33
 richy - 8 nov. 2022 à 14:25

Bonjour,

Script dos

le besoin c'est de tester sur le contenu du  répertoire "D:\Echanges\Export\"

IF EXIST des fichier je copie mon fichier témoin "c:\cygwin\depot.tem" dans le répertoire "D:\Echanges\Export\"  avec les fichier trouvés à consommer.

ELSE  je fais rien

ma boucle IF me renvoi dans les deux cas "AUCUN FICHIER A CONSOMMER"

merci d'avance.

## Script DOS ###################

@echo off

PATH=%PATH%;D:\Echanges\Export\
TITLE VERIFICATION DU FICHIER TEMOIN

::set chemin="D:\Echanges\Export\*"
set chemin="Echanges\Export\*"
::dir %chemin%

IF EXIST "D:\%chemin%" (
GOTO MESS
) ELSE (
echo.
echo.
echo.
echo " AUCUN FICHIER A CONSOMMER "
timeout 20 > NUL 
goto FIN
)

:MESS

cd C:\cygwin\
copy /y C:\cygwin\depot.tem D:\Echanges\Export\

goto FIN

:FIN
exit

##########################

1 réponse

brucine Messages postés 14333 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 27 avril 2024 1 817
8 nov. 2022 à 11:12

Bonjour,

Ton affaire marche plus ou moins mais est compliquée (les déclarations PATH, CD et DIR ne servent à rien).

Dans tous les cas, on est à la merci d'un "faux vide" qu'il faudrait tester (afficher les fichiers cachés, par exemple existence éventuelle d'un fichier system.ini).

Une solution comme suit me paraît plus "élégante":

 

@echo off

TITLE VERIFICATION DU FICHIER TEMOIN

::set chemin="D:\Echanges\Export\
set chemin="D:\Echanges\Export"

DIR /b /s /a %chemin% | findstr .>nul || (
  GOTO NONE
)
copy /y C:\cygwin\depot.tem %chemin%
GOTO FIN

:NONE
echo.
echo.
echo.
echo " AUCUN FICHIER A CONSOMMER "
rem pause ou timeout
pause

:FIN
exit
0

rebonjour,

merci pour votre réponse!

vous n'avez pas tester sur le contenu du répertoire?

désolé ça ne marche : voici ce que donne l'exécution: 

Fichier introuvable

" AUCUN FICHIER A CONSOMMER "
Appuyez sur une touche pour continuer...

0
brucine Messages postés 14333 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 27 avril 2024 1 817 > richy
8 nov. 2022 à 13:54

Bien sûr que j'ai testé, évidemment avec des chemins personnalisés: j'ai créé sous G:\photos\ un dossier test vide et utilisé un dossier antibes qui ne l'est pas; dans le premier cas j'affiche bien " AUCUN FICHIER A CONSOMMER ", dans le deuxième je copie bien le fichier empty.ico dans le dossier \antibes.

Ton fichier va à NONE parce que l'erreur rendue par DIR est analysée par FINDSTR comme un compte nul, et DIR rend une erreur parce que la syntaxe du chemin n'est pas valide (on peut vérifier en choisissant pour chemin G:\photos\abcd qui n'existe pas).

Soit donc ton dossier D:\Echanges\Export n'est pas existant lors de l'exécution (je n'ai pas testé, j'avais compris qu'il existait forcément mais éventuellement vide), soit D:\ est un lecteur externe inaccessible, soit il y a une erreur de syntaxe dans la définition du chemin.
 

@echo off

TITLE VERIFICATION DU FICHIER TEMOIN

::set chemin="D:\Echanges\Export"
set chemin="D:\Echanges\Export"
rem set chemin="G:\photos\antibes"
rem set chemin="G:\photos\test"

DIR /b /s /a %chemin% | findstr .>nul || (
  GOTO NONE
)
copy /y C:\cygwin\depot.tem %chemin%
rem copy /y C:\ProgramData\empty.ico %chemin%
GOTO FIN

:NONE
echo.
echo.
echo.
echo " AUCUN FICHIER A CONSOMMER "
rem pause ou timeout
pause

:FIN
exit


 

0

Re bonjour,

Merci ça fonctionne, c bien gentil de votre part.

bonne journée!

0