2 votes

La traduction en français avec les mêmes balises HTML serait : le service NSSM installé n'est effectué qu'une seule fois

Système d'exploitation : Windows 10

J'ai un fichier de commandes qui synchronise deux dossiers locaux.

:boucle
robocopy C:\Dossier_A C:\Dossier_B /E /MIR
timeout 20
Goto loop

Quand je l'ouvre manuellement, ça fonctionne très bien.

J'ai installé le fichier de commandes en tant que service NSSM. Au démarrage initial du service, les dossiers sont synchronisés, mais après cela le script est inactif. En redémarrant le service, la synchronisation initiale est de nouveau effectuée une fois.

Est-ce que je ne peux pas avoir de boucle dans un service, ou quel est le problème

2voto

iTwasnTme Points 5586

Vous pouvez avoir une boucle en suivant ces écrans / étapes / paramètres dans NSSM:

01) Application -----------------------------------------------------------
    Chemin:              ["%windir%\system32\cmd.exe"                ]|...|
    Répertoire de démarrage: ["C:\chemin\vers-dossier-bat"            ]|...|
    Arguments:         [/C "C:\chemin\vers-dossier-bat\Fichier_Batch.bat"  ]|...|

02) Détails ---------------------------------------------------------------
    Nom d'affichage: Boucle de test de lots
    Type de démarrage: Automatique (démarrage retardé)

03) Connexion ---------------------------------------------------------------
    (•) Compte Système Local [] Autoriser les services à interagir avec le bureau

04) Dépendances ------------------------------------------------------------

05) Processus --------------------------------------------------------------
    Priorité: [Normale ||]  Affinité: [ ] Tous les processus
    [] Fenêtres console           CPUs: ||
                                       |1|
                                       |2|
                                       |3|

06) Arrêt ------------------------------------------------------------------
    [] Générer un contrôle-C            Délai d'attente [1500 ]ms
    [] Envoyer WM_CLOSE aux fenêtres    Délai d'attente [1500 ]ms
    [] Poster WM_QUIT aux threads       Délai d'attente [1500 ]ms
    [] Terminer le processus

07) Actions de sortie ------------------------------------------------------
    Retarder le redémarrage si les applications s'exécutent moins de [1500 ]ms

    Action à prendre lorsque l'application se ferme [Redémarrer l'application ||]
    autre que en réponse à un arrêt contrôlé
    des services:                          Retarder de [0  ]ms

08) Rotation de fichiers ---------------------------------------------------

09) Environnement ----------------------------------------------------------

10) E/S ---------------------------------------------------------------------
    Entrée (stdin):   [                                               ]|...|
    Sortie (stdout): ["C:\chemin\vers-dossier-bat\Logs_Act_Nom_Batch.log"]|...|
    Erreur (stderr):  ["C:\chemin\vers-dossier-bat\Logs_Err_Nom_Batch.log"]|...|

Utilisez ce code dans votre fichier bat:

@echo off && cd /d "%~dp0"

:boucle
"%windir%\system32\robocopy.exe" C:\Dossier_A C:\Dossier_B /E /MIR
"%windir%\system32\timeout.exe" /t 20 & goto :boucle

À propos de ce qui ne va pas, eh bien, il est nécessaire de voir quels paramètres ont été utilisés

Il n'est pas possible de dire ce que c'est sans les voir.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X