目录的批处理脚本或更好的方法

时间:2010-04-13 03:41:10

标签: c# wpf batch-file echo mkdir

为我的应用创建一个简单的批处理文件。我的应用程序需要一些目录才能运行。

我认为第一种方法是制作批处理脚本:

@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应用程序。我想在这里做什么(如果它们还不存在的话,创建几个目录) - 我应该用其他方式吗?也许在应用程序中运行?

编辑:好的,很高兴只使用C#代码 - 但任何人都可以解释我的批处理问题吗?

3 个答案:

答案 0 :(得分:2)

您可以直接在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

答案 1 :(得分:2)

问题可能是您将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

答案 2 :(得分:1)

最简单的答案可能是您已经想到的 - 在运行时从应用程序创建目录。

DirectoryInfo.Create()是您需要的方法。