0

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

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

@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那么我该如何正确地做一个If呢?

输出:

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

所以它输入了真假陈述?

2) 该应用程序是 C# WPF 应用程序。对于我在这里尝试做的事情(如果它们不存在,则创建几个目录) - 我应该以其他方式做吗?也许在应用程序运行时?

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

4

3 回答 3

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

于 2010-04-13T03:46:00.183 回答
2

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

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

执行与

:CREATE

然后继续往下写剧本

:DONTCREATE

直到到达文件末尾。如果您想在 :CREATE 完成后去其他地方,您必须添加另一个 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
于 2010-04-13T04:43:40.633 回答
1

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

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

于 2010-04-13T03:45:27.937 回答