2017-07-13 5 views
0

Je sais qu'il est possible d'importer plusieurs tâches comme ceci:Importer des fichiers .xml tous Schtasks à l'intérieur du répertoire courant par lot

schtasks.exe /create /TN "Task 1 Name" /XML "Full_Path_of_Backup_XML_File" 
schtasks.exe /create /TN "Task 2 Name" /XML "Full_Path_of_Backup_XML_File" 
schtasks.exe /create /TN "Task 3 Name" /XML "Full_Path_of_Backup_XML_File" 

Mais je préfère une façon plus dynamique d'importer les fichiers de tous Schtasks intérieur le répertoire actuel. Tout comme this lot ici (.xml au lieu de .reg):

rem @echo off 
cls 
SET folder=%~dp0 
for %%i in ("%folder%*.reg") do (regedit /s "%%i") 
echo done 
pause 
EXIT 

Quelqu'un peut-il me guider vers la bonne direction? :)

+0

Qu'est-ce que vous avez essayé de votre propre à ce jour, où êtes-vous coincé? – aschipfl

Répondre

0

Voulez-vous dire que vous voulez parcourir tous les fichiers XML situés dans le même répertoire que le script de traitement par lots? Et puis créer une tâche planifiée avec chaque fichier XML trouvé? Si tel est le cas, vous pouvez essayer quelque chose comme ça (en supposant que les fichiers XML sont valides pour créer des tâches planifiées avec):

@echo off 

setlocal enabledelayedexpansion 

for %%e in ("%~dp0*.xml") do (
    set /a "count+=1" 
    schtasks /create /tn "Task !count! Name" /xml "%%~e" 
) 

Si vous devez être en mesure de transmettre des noms de fichiers XML qui contiennent des points d'exclamation à l'outil de ligne de commande schtasks, utilisez plutôt le code suivant:

@echo off 

setlocal disabledelayedexpansion 
set "count=1" 

for %%e in ("%~dp0*.xml") do (
    set "file=%%~e" 
    setlocal enabledelayedexpansion 
    schtasks /create /tn "Task !count! Name" /xml "!file!" 
    endlocal & set /a "count+=1" 
) 

encore une question, comment nommer le ta sks aiment leurs noms de fichiers .xml?

Cela fait de simplifier les choses parce qu'il n'y a pas besoin de développer une variable distincte dans le corps pour en boucle pendant le temps d'exécution:

@echo off 

setlocal disabledelayedexpansion 

for %%e in ("%~dp0*.xml") do (
    schtasks /create /tn "%%~ne" /xml "%%~e" 
) 
+0

Merci! Ça marche! J'ai directement essayé le deuxième script pour éviter de futurs problèmes de compatibilité. Encore une question, comment nommer les tâches comme leurs noms de fichiers .xml? – Clacers

+0

@Yethat De rien. J'ai mis à jour ma réponse et fourni une autre approche qui utilise le nom de fichier (sans extension) des fichiers XML en tant que noms de tâches nouvellement créés. – treintje

+0

Très bien! :) Une dernière chose: Si des tâches existent déjà - comment remplacer les anciennes? – Clacers