-1

私は今msdos関連の質問をするのは神ではないことを知っています。しかし、私は小さな問題を抱えています。アプリケーションフォームへのインストーラープロジェクトを作成しています。そのアプリケーションは、指定されたパスでデータベースの作成スクリプトを実行する必要があります。パスが存在しない場合、SQLエンジンはエラーメッセージを返すため、パスが存在するかどうかを確認する必要があります。そうでない場合は、テスト用に以下のスクリプトを使用してパスを作成する必要がありますが、期待どおりに機能しません。同じbatファイルを2回実行すると、以下のエラーが発生します

「サブディレクトリまたはファイル\installations\databaseはすでに存在します」

私のコードを聞く

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

これを解決するのを手伝ってください。私がSQLから解決策を得ることができれば、それは私の答えになります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

元のコードのロジックに問題がありました。

ディレクトリがすでに存在する場合にのみディレクトリを変更し、ディレクトリを作成するためのコードに分類されていました。

ディレクトリが存在するかどうかを確認するときは\、末尾に追加して、IFEXISTがファイル名ではなくディレクトリのみと一致することを確認することをお勧めします。

これが修正されたロジックです。

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