1. ホーム
  2. ウィンドウズ

[解決済み】バッチファイル内にファイルが存在するかどうかを確認する方法は?

2022-04-12 13:07:28

質問

を作成する必要があります。 .BAT というファイルを作成します。

  1. もし C:\myprogram\sync\data.handler が存在する場合は、終了します。
  2. もし C:\myprogram\html\data.sql が存在しない場合は、終了します。
  3. C:\myprogram\sync\ を除くすべてのファイルとフォルダーを削除します。 test , test3test2 )
  4. コピー C:\myprogram\html\data.sql から C:\myprogram\sync\
  5. オプションで他のバッチファイルを呼び出す sync.bat myprogram.ini .

Bash環境であれば簡単なのですが、ファイルやフォルダが存在するかどうか、ファイルやフォルダであるかどうかをテストする方法が分かりません。

どのように解決しますか?

IF EXIST を使って、ファイルの有無を確認することができます。

IF EXIST "filename" (
  REM Do one thing
) ELSE (
  REM Do another thing
)

もし、"else"が必要ない場合は、以下のようにすることも可能です。

set __myVariable=
IF EXIST "C:\folder with space\myfile.txt" set __myVariable=C:\folder with space\myfile.txt
IF EXIST "C:\some other folder with space\myfile.txt" set __myVariable=C:\some other folder with space\myfile.txt
set __myVariable=

ここでは、ファイルやフォルダーを検索する例を示します。

REM setup

echo "some text" > filename
mkdir "foldername"

REM finds file    

IF EXIST "filename" (
  ECHO file filename exists
) ELSE (
  ECHO file filename does not exist
)

REM does not find file

IF EXIST "filename2.txt" (
  ECHO file filename2.txt exists
) ELSE (
  ECHO file filename2.txt does not exist
)

REM folders must have a trailing backslash    

REM finds folder

IF EXIST "foldername\" (
  ECHO folder foldername exists
) ELSE (
  ECHO folder foldername does not exist
)

REM does not find folder

IF EXIST "filename\" (
  ECHO folder filename exists
) ELSE (
  ECHO folder filename does not exist
)