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

我认为的第一个方法只是制作一个批次脚本:

@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#代码中做 - 但是有人可以解释我的批次问题吗?

有帮助吗?

解决方案

问题也许是您将GOTO目标视为方法起点。它们只是文件中的标签。这意味着之后

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

执行

:CREATE

然后继续沿着脚本直接通过

:DONTCREATE

直到到达文件的末尾。如果您想在其他地方去某个地方,则必须添加另一个goto:创建完成。通常的情况是将其告诉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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top