0

アプリ用の簡単なバッチ ファイルの作成を検討しています。私のアプリでは、実行時にいくつかのディレクトリを配置する必要があります。

私が最初に考えた方法は、バッチ スクリプトを作成することでした。

@ECHO OFF
IF NOT EXIST C:\App GOTO :CREATE ELSE GOTO :DONTCREATE

:CREATE
MKDIR C:\App\Code
ECHO DIRECTORY CREATED

:DONTCREATE
ECHO IT WAS ALREADY THERE

1) これは期待どおりに実行されません。:CREATEとの両方:DONTCREATEが関係なく実行されているように見えますか? If を適切に行うにはどうすればよいですか?

出力:

A subdirectory or file C:\App\Code already exists.
DIRECTORY CREATED
IT WAS ALREADY THERE

それで、真と偽の両方のステートメントに入りますか?

2) アプリは C# WPF アプリです。私がここでやろうとしていること (まだ存在しない場合はいくつかのディレクトリを作成します) - 他の方法で行う必要がありますか? おそらく実行中のアプリケーションで?

編集:わかりました、C#コードでやってよかった-しかし、誰かが私のバッチの問題を説明できますか?

4

3 に答える 3

2

問題はおそらく、GOTO ターゲットをメソッドの開始点と考えていることです。それらはファイル内の単なるラベルです。これは、その後

IF NOT EXIST C:\App GOTO :CREATE ELSE GOTO :DONTCREATE

実行がピックアップ

:CREATE

そして、スクリプトを最後まで続けます

:DONTCREATE

ファイルの終わりに到達するまで。:CREATE の終了後に別の場所に移動する場合は、別の GOTO を追加する必要があります。通常は、次のように、最後に GOTO :EOF (組み込みラベル) を指定します。

@ECHO OFF
IF EXIST C:\App GOTO :DONTCREATE

:CREATE
MKDIR C:\App\Code
ECHO DIRECTORY CREATED
GOTO :EOF

:DONTCREATE
ECHO IT WAS ALREADY THERE
于 2010-04-13T04:43:40.633 に答える
2

それが簡単な場合は、C# ですべてのディレクトリを直接行うことができます。

if (!Directory.Exists(@"c:\app\code")
{
     Directory.CreateDirectory(@"c:\app\code");
}
else
{
     Console.WriteLine("Directory already exists!");
}

詳細については、このページを参照してください: http://msdn.microsoft.com/en-us/library/wa70yfe2%28v=VS.100%29.aspx

于 2010-04-13T03:46:00.183 に答える
1

最も簡単な答えは、おそらく既に考えられていることです。アプリケーションの実行中にディレクトリを作成することです。

DirectoryInfo.Create()は、必要なメソッドです。

于 2010-04-13T03:45:27.937 に答える