2017-07-07 4 views
1

Je travaille sur la modification d'un fichier batch utilisé pour les sauvegardes. Quand il s'exécute, il crée un nouveau shadowcopy, le monte, sauvegarde ce qu'il devrait, et le démonte. Ce que je voudrais faire est de supprimer la copie d'ombre créée. Je ne sais pas quoi supprimer shadowcopys existants pour des raisons médico-légales. Voici la section du code que je suis en train de publier.Suppression d'une ShadowCopy avec un fichier batch

:DeleteNewSCopy 
REM : Locates then removes the last created shadowcopy. 
SET ShadowID= 
FOR /F "usebackq tokens=1,2* delims=:" %%A IN (`FINDSTR /I /C:"Shadow Copy ID:" %TempFile%`) DO SET ShadowID=%%B 

IF NOT "%ShadowID%" == "" (
    REM : Last ShadowCopy ID was found, Nuke it. 
    vssadmin delete shadows /Shadow=%ShadowID% 
) ELSE (
    ECHO No ShadowCopy ID found. 
) 
GOTO :EOF 

La ligne FOR semble fonctionner correctement. Quand j'ECHO le% ShadowID% au cours de l'exécution, je reçois:

ShadowID: {4fcb026a-08fe-4a34-b198-da7560db57bf} 

Mais la ligne à supprimer le ShadowCopy échoue avec:

Error: Invalid option value. 

Dans la ligne de commande, je peux définir ShadowID avoir la même chaîne et exécuter la commande sans problème, donc il semble que cela devrait fonctionner dans le fichier batch.

Toute aide sera appréciée.

Répondre

0

J'ai trouvé que le problème n'était pas avec le code c'était avec comment je tirais la variable ShadowID. Il y avait un espace principal qui devait être retiré. J'ai utilisé une solution postée par Foumpie pour la réparer.

https://stackoverflow.com/a/12089079/8272143