-1

我知道现在问ms dos相关问题不是上帝。但我有一个小问题,我正在为应用程序表单创建一个安装程序项目,该应用程序我需要执行具有指定路径的创建数据库脚本。当路径不存在时,sql引擎返回错误消息,因此我需要检查路径是否存在,如果不存在,我需要创建路径来执行此操作,我使用以下脚本进行测试,但它不能按我预期的那样工作。当我第二次执行相同的 bat 文件时,它给了我以下错误

“子目录或文件 \installations\database 已存在”

听到是我的代码

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

请帮我解决这个问题。如果我可以从 sql it self 获得解决方案,这将是我个人的答案 cz 我不喜欢 dos 批次:)

提前致谢。

4

3 回答 3

2

我找到了解决方案,感谢您帮助我

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

master.dbo.xp_fileexist @file

参考

我们可以使用以下命令创建一个文件夹

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

提取形式

非常感谢您对这个问题的支持。我认为这是满足我要求的理想解决方案。请随时添加您的想法。

于 2012-04-14T16:53:04.033 回答
0

我不是 DOS 批处理专家,但这里有一些建议:

  1. cd C:\installations\database这似乎真的错了。关于什么 :

    C:
    cd installations\database
    
  2. 同样,您为什么不首先验证您是否在正确的目录中:

    :NODIR
    C:
    mkdir installations
    cd installations
    mkdir database
    
于 2012-04-14T16:18:33.497 回答
0

您的原始代码有错误的逻辑。

如果目录已经存在,它只会更改目录,然后它会落入创建目录的代码中。

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

这是更正的逻辑。

c:
if not exist "c:\installations\database\" mkdir "c:\installations\database"
cd "c:\installations\database"
于 2012-04-16T04:59:07.943 回答