2016-12-01 3 views
1

私は単純なバッチファイルを作成し、ユーザー入力を取得し、存在する場合は検索し、存在しない場合はファイルを作成しようとしています。ファイルを確認してから作成する

ハードコードされたテストを実行できましたが、変数を追加すると実行されません。

また、完全なパス(最後に変数を含む)をエコーし​​ていて、それが正しいように見えました。

@echo off 
set /p store="New DayCamp Number: (Example: 0050 or 3015) " 
IF EXIST "X:\path\%Store%.txt" (
break>"X:\path\%Store%.txt" 
) ELSE (
REM Do Nothing 
) 
echo "X:\path\%Store%.txt" 
pause 
+2

ファイルが存在しない場合は、作成するとします。存在する場合は作成しています。本質的にそれを上書きする。 – Squashman

+0

もし 'IF'コマンドのヘルプファイルを読んでいないのであれば、 'NOT'オプションを使う必要があります。 – Squashman

+0

@スカッシュマンそれはそれだった...愚かな間違いとそれを後方に持っていた。答えとして提出し、私は解決済みとしてマークします。 – dwb

答えて

2

次のコードスニペットは、同じことを行う必要があります。

@echo off 
set /p store="New DayCamp Number: (Example: 0050 or 3015) " 
break>>"X:\path\%Store%.txt" 

説明:太字に次の文にまとめを置く:

Redirectionは言う:

  • ファイル

break /?にファイル

  • command >> filenameAPPENDへリダイレクトコマンドの出力は言う:

    ...

    これは、DOSシステムとの互換性のために存在しています。それはの効果がありません Windowsの下に

    ...

    はしかし、set /pの結果を使用してチェックするためにいくつかのテストが必要です。ユーザーはちょうど(すなわち戻りthen the variable will be unchangedを入力して、空の文字列可能性がヒットした場合。たとえば、基本チェック

    @echo off 
    set /p store="New DayCamp Number: (Example: 0050 or 3015) " 
    if NOT "%Store%"=="" break>>"X:\path\%Store%.txt" 
    
  • +0

    あなたは 'もし定義されたStore'を使うこともできます... – aschipfl

    +0

    すばらしい答えに感謝します! – dwb