2010-04-13 4 views
0

Vous cherchez à créer un fichier batch simple pour mon application. Mon application a besoin de certains répertoires pour être en place pendant son exécution.Script par lots pour les répertoires ou meilleure méthode

La première méthode que je pensais était juste faire un script batch:

@ECHO OFF 
IF NOT EXIST C:\App GOTO :CREATE ELSE GOTO :DONTCREATE 

:CREATE 
MKDIR C:\App\Code 
ECHO DIRECTORY CREATED 

:DONTCREATE 
ECHO IT WAS ALREADY THERE 

1) Cela ne fonctionne pas comme je l'attendre. Les deux :CREATE et :DONTCREATE semblent fonctionner indépendamment? Comment puis-je faire un si correctement alors?

Sortie:

A subdirectory or file C:\App\Code already exists. 
DIRECTORY CREATED 
IT WAS ALREADY THERE 

Il entre dans les deux déclarations vraies et fausses?

2) L'application est une application C# WPF. Pour ce que j'essaie de faire ici (créer quelques répertoires s'ils n'existent pas déjà) - devrais-je le faire autrement? Peut-être dans l'application comme elle fonctionne?

edit: Ok, heureux de faire juste dans le code C# - mais quelqu'un peut-il expliquer le problème avec mon lot?

Répondre

2

le problème est peut-être que vous pensez du GOTO cibles comme points de départ de la méthode. Ce ne sont que des étiquettes dans le fichier. Cela signifie que, après

IF NOT EXIST C:\App GOTO :CREATE ELSE GOTO :DONTCREATE 

exécution reprend avec

:CREATE 

et continue ensuite vers le bas le script à travers

:DONTCREATE 

jusqu'à la fin du fichier est atteinte. Vous devez ajouter un autre GOTO si vous voulez aller ailleurs après: CREATE finit. Le cas habituel est de le dire à GOTO: EOF (une étiquette intégrée) à la fin, comme suit:

@ECHO OFF 
IF EXIST C:\App GOTO :DONTCREATE 

:CREATE 
MKDIR C:\App\Code 
ECHO DIRECTORY CREATED 
GOTO :EOF 

:DONTCREATE 
ECHO IT WAS ALREADY THERE 
+0

Merci pour l'explication – baron

1

La réponse la plus simple est probablement ce que vous avez déjà pensé - pour créer le répertoire à partir de l'application pendant son exécution.

DirectoryInfo.Create() est la méthode dont vous aurez besoin.

2

Vous pouvez faire tous les trucs annuaire directement en C#, si ce serait plus facile:

if (!Directory.Exists(@"c:\app\code") 
{ 
    Directory.CreateDirectory(@"c:\app\code"); 
} 
else 
{ 
    Console.WriteLine("Directory already exists!"); 
} 

Voir cette page pour plus d'informations: http://msdn.microsoft.com/en-us/library/wa70yfe2%28v=VS.100%29.aspx

Questions connexes