回答:
これを使用するif not exist "C:\VTS\" mkdir C:\VTS
だけです。フォルダが存在しない場合にのみディレクトリを作成します。
この存在テストは、VTSが存在し、ディレクトリである場合にのみtrueを返すことに注意してください。そこにない場合、またはファイルとして存在する場合は、mkdirコマンドが実行され、エラーが発生します。VTSがファイルとして存在するかどうかを確認することもできます。
NUL
ものテストの問題だと思います。
if exist "a" if not exist "a\" (echo "it's a file") else (echo "it's a dir")
。あなたの最後の文について、私はどこかであなたのバッチファイルに問題があると思います。
if exist C:\VTS\NUL echo "Folder already exists"
if not exist C:\VTS\NUL echo "Folder does not exist"
https://support.microsoft.com/en-us/kb/65994も参照してください
(2018年3月7日更新、Microsoftの記事はダウンしています。https://web.archive.org/web/20150609092521/https://support.microsoft.com/en-us/kb/65994にアーカイブしてください)
NUL
1 L.である
mkdir C:\VTS
何があっても電話してください。サブディレクトリがすでに存在することを報告するだけです。
編集:他の人が指摘したように、フォルダが既に存在する場合、これは%ERRORLEVEL%を設定します。バッチ(またはそれを呼び出すプロセス)がエラーレベルを気にしない場合、このメソッドは適切に機能します。質問ではエラーレベルを回避することについて言及されていないため、この回答は完全に有効です。フォルダーが存在しない場合、フォルダーを作成するニーズを満たし、既存のフォルダーの内容を上書きしません。それ以外の場合は、Martin Schapendonkの回答に従ってください。
私はこの方法を使用し、あなたがすべきディレクトリ名の末尾にバックスラッシュを入れて使用することはありません、その場所が指定したディレクトリと同じ名前で拡張子のないファイル内に存在を避けるために、「C:\ VTS」を、ファイルをことができるので、名前で存在「VTS」に保存された「C:」パーティション、正しい方法を使用することです「C:\ VTS \」の後にバックスラッシュをチェックアウト、VTSので、正しい方法です。
@echo off
@break off
@title Create folder with batch but only if it doesn't already exist - D3F4ULT
@color 0a
@cls
setlocal EnableDelayedExpansion
if not exist "C:\VTS\" (
mkdir "C:\VTS\"
if "!errorlevel!" EQU "0" (
echo Folder created successfully
) else (
echo Error while creating folder
)
) else (
echo Folder already exists
)
pause
exit
!errorlevel!
、つまり拡張の遅延です。それ以外の場合、変数ERRORLEVEL
は最初に入る前にif
(つまり、解析時に)解析されます。現在は実行時に解析されるため、の結果を取得できmkdir
ます。また、存在をテストしても、成功をテストする必要があります(たとえば、アクセス拒否エラーなど)。他に比べて非常に良い解決策+10 !!!
以下を使用できます。
if not exist "C:\VTS\" mkdir "C:\VTS"
また、コードを展開して、予期しないファイルを置き換えることもできます。
if not exist "C:\VTS\important.file" echo. > "C:\VTS\important.file"
アイビームの仕事で使用するスクリプト用に作成しました。
:CREATES A CHECK VARIABLE
set lookup=0
:CHECKS IF THE FOLDER ALREADY EXIST"
IF EXIST "%UserProfile%\AppData\Local\CounterPath\RegNow Enhanced\default_user\" (set lookup=1)
:IF CHECK is still 0 which means does not exist. It creates the folder
IF %lookup%==0 START "" mkdir "%UserProfile%\AppData\Local\CounterPath\RegNow Enhanced\default_user\"
if not exist "%Folder%" mkdir "%New-Folder%"