2017-06-14 2 views
0

J'utilise Quality Center pour exécuter des tests dans Windows 8. Le fichier VBScript crée un espace de travail/dossier temporaire (horodaté) pour cloner le référentiel git et exécuter le test.Impossible de supprimer le dossier avec GIT repo via la commande dans VBScript

Lorsque j'essaie de supprimer le dossier à la fin du test, cela ne fonctionne pas et donne une erreur: Définition de type de champ non valide.

Ce code fonctionne correctement si je travaille avec un référentiel non git et un projet statique. Si je supprime manuellement le dossier .git, le script est capable de supprimer le reste des dossiers/fichiers.

'''workspace = "C:\tests\20170613224942" 
Dim objFSO, objFolder 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
objFSO.CreateFolder(workspace) 

'git clone 
'Test Execution 

Dim objFSO, objFolder 
Set objFSO = CreateObject("Scripting.FileSystemObject") 

objFSO.DeleteFolder(workspace) 

je l'ai déjà essayé (sans succès) quelque chose comme ça:

objShell.Run "rmdir /S /Q " & workspace 

Je ne sais pas si son problème avec le dossier caché j'ai donc essayé ceci:

del /s /a *.git 

Mais cela ne fonctionne pour les fichiers et dans ce cas, seul le dossier est caché. Pas les sous-dossiers/sous-fichiers.

Quelqu'un peut-il m'aider à résoudre ce problème? Comment puis-je forcer la suppression du dossier automatiquement via un script? Merci.

Répondre

0

Pouvez-vous essayer:

git rm -r gitDirectoryToRemove 

puis votre code pour supprimer le parent si nécessaire

+0

J'ai essayé et donnez-moi l'erreur: fatal: Pas un dépôt git (ou l'un des répertoires parents): .git – koxta

+0

Got it. Ensuite, vous essayez d'accéder au GIT/en essayant de commander à partir d'un répertoire non-git. Vous devez changer de répertoire dans le dossier parent de git avant d'entrer la commande git. – smilyface

+0

Dans le dossier parent de git, la commande fonctionne mais seul le projet/code est supprimé. Le dossier **. Git ** (dossier problématique) n'est pas supprimé. – koxta

0

trouvé une solution temporaire. Peut-être pas élégant, mais résout le problème. J'ai créé un fichier .bat uniquement pour supprimer le dossier passé par l'argument et je l'appelle dans VBS.

fichier Bat:

@echo off 
@echo Try to removing %1 
rmdir "%1" /s/q 

VBS Appel:

Set objShell = CreateObject("Wscript.Shell") 
objShell.Run "C:\tests\rm_workspace.bat " & workspace 

Retrait indirectement, cela fonctionne comme un charme. La raison: ne sais toujours pas pourquoi.