Je suis en train de créer un fichier batch qui au démarrage de Windows vérifie si le pc portable est connecté au serveur et dans ce cas rapatrie les fichiers d’un répertoire du portable directement sur le serveur.
Par contre je voudrais rajouter une condition dans mon batch, si le répertoire source du pc portable est vide le batch doit s’interrompe. Cette condition est importante car le batch pose la question du repertoire cible a chaque démarrage alors que souvent le repertoire source est vide.
Fichier batch d’essai :
color 70
if not exist “C:\Documents and Settings\julien.REBI0\Bureau\scan” Goto 1
SET /p VAR1=Nom du collaborateur:
Move /-Y “C:\Documents and Settings\julien.REBI0\Bureau\Scan*.*” “C:\Documents and Settings\julien.REBI0\Bureau\Repertoire”%var1%""
pause
:1
Conformément à la charte du forum prog, peux-tu préciser le langage dans le titre de ton sujet en éditant ton 1er message et en remplissant le champ tag avec une des valeurs prédéfinies ?
En faite c’est tout bète, je travail dans un cabinet comptable quand on est en deplacement on fait des scans qui sont mis dans un repertoire et mon patron veut que les fichiers de ce repertoire soit transféré de façon automatique (pour eviter les oublis).
En rentrant on branche simplement le portable sur le reseau, le batch demarre avec windows mais en faite je ne dois pas tester le C:\ comme sur mon fichier d’exemple mais le disque dur S:\ du serveur (c’etait juste pour voir si ça marchait) .
Oui sans probleme, j’ai refais le batch avec les vrais données.
color 70
if not exist “S:\Scan” Goto 1
SET /p VAR1=Nom du collaborateur:
Move /-Y “C:\Documents and Settings\julien.REBI0\Bureau\Scan*.*” “S:\Scan”%var1%""
pause
:1
Le lecteur S:\ apparait seulement sur le réseaux, le portable est automatiquement connecté sur le serveur grace au wifi quand on est au cabinet.
Il me manque seulement a ne pas executer le batch si le repertoire scan du portable est vide.
Je suis désolé de ne pas etre plus clair.
Edité le 23/10/2007 à 10:21
Quand tu dis ne pas exécuter le batch, tu veux dire ne pas exécuter la partie Set … Move… ?
Il faut que tu testes par rapport à un nom de fichier, même générique, du genre *.doc ou *.xls.
Avec . ca ne marche pas, sans doute parce que ton répertoire contient toujours au moins . et …
Je veux dire de que la fenetre se ferme sans appeler la variable, sinon a chaques demarrages du portable au cabinet, le batch va demander le nom du collaborateur (pour copier au bon endroit) alors qu’il n’ya pas de fichier a copier.
Comme tu dis avec . ça marche pas, j’avais penser a une solution en regardant la taille du dossier mais je suis incapable de la mettre en place
tu n’as pas au moins un type de fichier dont tu es sûr qu’il existera dans le répertoire à chaquefois qu’il y a quelque chose à récupérer, pour faire le test avec *.extension ?
Sinon, tu as aussi le vbs (ou powershell)
Donc pas facile de faire comme ca.
Ce qu’il faudrait, c’est compter le nombre de fichiers “utiles” (non cache/non systeme), mais là, comme je le disais plus haut, je pense qu’il faut passer par le vbs
Edit: en y réfléchissant bien, il doit aussi y avoir une solution via les variables d’environnement, avec l’option de calcul /A
Edité le 23/10/2007 à 14:19
En fait, tu peux t’en sortir en batch de la manière suivante :
Fichier batch d’essai :
color 70 set n=0
for %%I in ( “C:\Documents and Settings\julien.REBI0\Bureau\scan*.*”) set /A n=%n%+1
if %n%==0 goto :eof
SET /p VAR1=Nom du collaborateur:
Move /-Y “C:\Documents and Settings\julien.REBI0\Bureau\Scan*.*” “C:\Documents and Settings\julien.REBI0\Bureau\Repertoire”%var1%""
pause
Le comptage set /A n=%n%+1 ne te donnera pas le nombre de fichiers de ton répertoire comme on pourrait s’y attendre, mais il sera nul si le répertoire est vide, et vaudra 1 dans le cas contraire. Mais dans ton cas, cela suffit largement.
Après, il n’y a plus qu’à rajouter un test et la suite conditionnelle.