Пакетный скриптинг для каталогов или лучший метод - PullRequest
0 голосов
/ 13 апреля 2010

Глядя на создание простого командного файла для моего приложения. Моему приложению нужны некоторые каталоги, чтобы оно работало.

Первый метод, который я подумал, это просто сделать пакетный скрипт:

@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) Это не работает, как я ожидал. :CREATE и :DONTCREATE, кажется, работают независимо? Как мне сделать если правильно тогда?

Выход:

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

То есть в него входят как истинные, так и ложные утверждения?

2) Приложение представляет собой приложение C # WPF. Для того, что я пытаюсь сделать здесь (создать пару каталогов, если они еще не существуют) - я должен сделать это другим способом? Возможно в приложении как оно работает?

edit : Хорошо, рад просто сделать это в коде C #, но кто-нибудь может объяснить проблему с моей партией?

Ответы [ 3 ]

2 голосов
/ 13 апреля 2010

Вы можете выполнять всю работу с каталогами непосредственно в C #, если это будет проще:

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

См. Эту страницу для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/wa70yfe2%28v=VS.100%29.aspx

2 голосов
/ 13 апреля 2010

проблема, возможно, в том, что вы думаете о целях GOTO как о начальных точках метода. Они просто метки в файле. Это означает, что после

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

исполнение начинается с

:CREATE

и затем продолжается вниз по сценарию до

:DONTCREATE

до конца файла. Вы должны добавить еще один GOTO, если хотите пойти куда-нибудь еще после: CREATE завершает. Обычный случай - сообщить GOTO: EOF (встроенная метка) в конце следующим образом:

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

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

:DONTCREATE
ECHO IT WAS ALREADY THERE
1 голос
/ 13 апреля 2010

Возможно, вы уже подумали о простейшем ответе - создать каталог из приложения во время его работы.

DirectoryInfo.Create () - это метод, который вам нужен.

...