Dos 命令(如果存在)无法正常工作
Posted
技术标签:
【中文标题】Dos 命令(如果存在)无法正常工作【英文标题】:Dos Command if exist does not work properly 【发布时间】:2012-04-14 16:12:08 【问题描述】:我知道现在问 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 批次:)
提前致谢。
【问题讨论】:
【参考方案1】:我找到了解决方案,谢谢你帮助我
我们可以通过执行下面的脚本来检查文件夹是否存在
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
非常感谢您对这个问题的支持。我认为这是满足我要求的理想解决方案。请随时添加您的想法。
【讨论】:
【参考方案2】:我不是 DOS 批处理专家,但这里有一些建议:
cd C:\installations\database
这似乎真的错了。怎么样:
C:
cd installations\database
同样,你为什么不先验证你是否在正确的目录中:
:NODIR
C:
mkdir installations
cd installations
mkdir database
【讨论】:
我确实尝试过,但它不起作用的是,如果指定位置中不存在该文件夹,脚本将创建一个,但如果该文件夹存在,它会给我一条错误消息【参考方案3】:您的原始代码有错误的逻辑。
只有在目录已经存在的情况下才改变目录,然后才落入创建目录的代码中。
在检查目录是否存在时,最好在末尾附加\
,以确保 IF EXIST 仅匹配目录而不匹配文件名。
这里是更正的逻辑。
c:
if not exist "c:\installations\database\" mkdir "c:\installations\database"
cd "c:\installations\database"
【讨论】:
以上是关于Dos 命令(如果存在)无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
在dos下无法使用unzip命令,提示‘unzip’不是内部命令或外部命令,是怎么回事?如何才能使用unzip?