为我的应用创建一个简单的批处理文件。我的应用程序需要一些目录才能运行。
我认为第一种方法是制作批处理脚本:
@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#代码 - 但任何人都可以解释我的批处理问题吗?
答案 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()是您需要的方法。