【问题标题】:Batch scripting for directories or better method目录的批处理脚本或更好的方法
【发布时间】:2010-04-13 03:41:09
【问题描述】:

着眼于为我的应用创建一个简单的批处理文件。我的应用在运行时需要一些目录。

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

@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# 代码 - 但谁能解释我的批处理问题?

【问题讨论】:

    标签: c# wpf batch-file echo mkdir


    【解决方案1】:

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

    【讨论】:

      【解决方案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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-07-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-21
          • 2014-07-08
          相关资源
          最近更新 更多