2012-04-14 42 views
-1

我知道它不是上帝现在要问ms dos相关的问题。但我有一个小问题 我正在创建一个安装程序项目到一个应用程序窗体,我需要执行一个具有指定路径的创建数据库脚本的应用程序。当路径不存在时,sql引擎会返回一条错误消息,因此我需要检查路径是否存在,如果不是,我需要创建路径 来使用下面的脚本进行测试,但它不起作用。当我执行相同的bat文件,第二次它给了我下面的错误如果存在Dos命令无法正常工作

“子目录或文件\安装\数据库中已存在”

听到的是我的代码

c: 
IF NOT EXIST c:\installations\database GOTO NODIR 
cd C:\installations\database 
:NODIR 
mkdir \installations\database\ 

请帮我解决这个问题。如果我可以得到一个解决方案从SQL它自我将是我的答案CS亲自我不喜欢DOS批次:)

在此先感谢。

回答

2

我发现这个感谢的一个解决方案,帮助我

我们可以通过执行下面的脚本检查文件夹是否存在

master.dbo.xp_fileexist @file 

Reference

,我们可以使用下面的命令

SET @Path = 'E:\temp\' 
SET @MD = ' mkdir ' + @Path +'WK' + @wk_no 
EXEC xp_cmdshell @MD, no_output 

extracted form

创建一个文件夹非常感谢你为这个问题的支持。我认为这是我的要求的理想解决方案。请随时添加您的想法。

0

我不是一个DOS批处理大师,但这里有一些建议:

  1. cd C:\installations\database这似乎真的错了。怎么样:

    C: 
    cd installations\database 
    
  2. 同样,你为什么不验证你是在正确的目录第一:

    :NODIR 
    C: 
    mkdir installations 
    cd installations 
    mkdir database 
    
+0

我曾尝试这一点,但它没有工作 是,如果该文件夹不指定位置脚本存在将创建一个,但如果该文件夹存在,它给了我一个错误信息 – Prabhakantha 2012-04-14 16:34:45

0

你原来的代码有错误的逻辑。

只是在目录已经存在的情况下才更改目录,然后才将其放入创建目录的代码中。

当检查目录是否存在时,最好在末尾附加\以确保IF EXIST仅匹配一个目录而不是文件名。

这里是纠正的逻辑。

c: 
if not exist "c:\installations\database\" mkdir "c:\installations\database" 
cd "c:\installations\database"