2012-04-14 110 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"