题
查看为我的应用创建一个简单的批处理文件。我的应用需要一些目录才能运行。
我认为的第一个方法只是制作一个批次脚本:
@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() 是您需要的方法。
不隶属于 StackOverflow