現在のディレクトリに空白が含まれている場合に、ファイルに対してバッチで EXIST を使用する

現在のディレクトリに空白が含まれている場合に、ファイルに対してバッチで EXIST を使用する

複数のディレクトリで動作するバッチ ファイルがあります:

「folder.jpg」というファイルを探します。存在する場合は、それを使用します。存在しない場合は、「front.jpg」を使用し、それを「cover.jpg」にコピーします。簡単そうです。

問題は、ディレクトリに空白 ( - ) が含まれていることです。

次のバッチ ファイルではエラーが発生します。「EXISTS」バッチ コマンドで使用できるファイル名を取得する方法を教えてください。

「./folder.jpg」も試しましたが、成功しませんでした。

@echo off

set file=%CD%\folder.jpg
set

if exists %file% goto FOLDER

:FRONT
@echo ** copy front.jpg to cover.jpg
copy front.jpg cover.jpg
goto PROCESS

:FOLDER
@echo ** rename folder.jpg to cover.jpg
ren folder.jpg cover.jpg


:PROCESS
@echo ** call dpi
call dpi
@echo ** call size
call size

前もって感謝します!

答え1

主な問題は、構文がIF EXIST ファイル名(つまり、's' は使用しません)。ファイル名とフォルダ名にスペースが含まれる場合は、引用符を使用します。

set file="%CD%\folder.jpg"
if exist %file% goto FOLDER

または...

set file=%CD%\folder.jpg
if exist "%file%" goto FOLDER

また、3 行目のコード行に本当に baresetコマンドが必要だったのでしょうか? それだけだと少し寂しい感じがします。

@echo off最後に、スクリプトの先頭にがある場合、@すべてのコマンドの先頭にシンボルを配置する必要はありませんecho

関連情報