2017-07-07 10 views
1

Ich arbeite daran, eine Batch-Datei zu ändern, die für Backups verwendet wird. Wenn es ausgeführt wird, erstellt es eine neue Shadowcopy, mountet es, sichert das, was es sollte, und hebt es auf. Was ich tun möchte, ist es, die erstellte Schattenkopie löschen zu lassen. Ich möchte aus forensischen Gründen bestehende Schattenkopien nicht löschen. Hier ist der Codeabschnitt, den ich habe und mit dem ich Probleme habe.Entfernen eines ShadowCopy mit einer Batch-Datei

: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 

Die FOR-Linie scheint korrekt zu funktionieren. Als ich die% ShadowID% während der Laufzeit ECHO aus erhalte ich:

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

Aber die Linie der shadow löschen schlägt mit:

Error: Invalid option value. 

In der Befehlszeile kann ich ShadowID setzen die haben gleiche Zeichenfolge und führen Sie den Befehl ohne Problem, so scheint es, dass es in der Batch-Datei funktionieren sollte.

Jede Hilfe wird geschätzt.

Antwort

0

Ich fand, dass das Problem nicht mit dem Code war, mit dem ich war, wie ich die Variable ShadowID zog. Es hatte einen führenden Platz, der entfernt werden musste. Ich habe eine Lösung von Foupie benutzt, um es zu reparieren.

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

Verwandte Themen