Windowsのバッチスクリプトで次のことを行う方法を誰かに教えてもらえますか。 (*.bat
):
より詳しくは、C:\
ドライブにVTS
という名前のフォルダーを作成したいのですが、それはそのフォルダーがまだ存在しない場合に限られます。フォルダーが既に存在していてバッチが実行されている場合は、フォルダーの内容を上書きしたくありません。
あなたはこれを使うだけです:if not exist "C:\VTS\" mkdir C:\VTS
itはフォルダが存在しない場合にのみディレクトリを作成します。
この存在テストは、VTSが存在し、それがディレクトリである場合にのみtrueを返すことに注意してください。存在しない場合、またはファイルとして存在する場合は、mkdirコマンドが実行され、エラーが発生します。 VTSもファイルとして存在するかどうかを確認したいと思うかもしれません。
if exist C:\VTS\NUL echo "Folder already exists"
if not exist C:\VTS\NUL echo "Folder does not exist"
https://support.Microsoft.com/ja-jp/kb/65994 も参照してください。
(2018年3月7日に更新。Microsoftの記事は停止中。 https://web.archive.org/web/20150609092521/https://support.Microsoft.com/ja-jp/kb/65994 にアーカイブ)
何があってもmkdir C:\VTS
を呼ぶだけです。サブディレクトリが既に存在することを単に報告するだけです。
編集: 他の人が指摘したように、これはフォルダが既に存在する場合に%ERRORLEVEL%を設定します。あなたのバッチ(またはそれを呼び出しているプロセス)がエラーレベルを気にしないのであれば、このメソッドはうまく機能します。質問はエラーレベルを回避することについて言及していないので、この答えは完全に有効です。フォルダが存在しない場合でもフォルダを作成するというニーズを満たし、既存のフォルダの内容を上書きすることもありません。それ以外の場合は、 Martin Schapendonkの回答に従ってください 。
mkdir C:\VTS 2> NUL
VTS
という名前のフォルダーを作成し、NUL
にA subdirectory or file TEST already exists
を出力します。
または
(C:&(mkdir "C:\VTS" 2> NUL))&
ドライブ文字をC:
、mkdir
に変更し、エラーをNUL
に出力して次のコマンドを実行します。
set myDIR=LOG
IF not exist %myDIR% (mkdir %myDIR%)
私はこの方法を使用し、ディレクトリ名の末尾にバックスラッシュを置く必要があります指定したディレクトリ、使用しない "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
あなたが使用することができます:
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\"