Предполагается, что эта часть моего сценария просматривает каталоги в поисках файлов * .wim, и если она находит их в папке «images», продолжайте. Однако он переходит прямо к "else" части кода: /

ECHO. Checking for WIMs
ECHO ............................................
ECHO. 

for /F "tokens=*" %%f in ('dir /B /S "%w%:\data\images"') do (
    if exist "%%~ff\*.wim" ( 
    ECHO found me some wims! let's continue.     
    GOTO actionmenu
    ) else (
         ECHO This script requires a wim repository folder to proceed. make sure you have
         ECHO properly populated the "\Images" folder before re-running this script
    goto end
    )
)
0
user2914317 3 Янв 2018 в 01:59

2 ответа

Лучший ответ

Вам даже не нужен цикл for. Dir дает %errorlevel% из 1, если что-то не находит:

dir /B /S "%w%:\data\images\*.wim" >nul && (
  echo found at least one wim file.
) || (
  echo no wim files found.
)

&& работает как "если предыдущая команда была успешной (dir нашел хотя бы один файл), то"
|| противоположен: "если предыдущая команда не удалась (dir не нашел подходящий файл), то"

0
Stephan 3 Янв 2018 в 07:16
for /F "tokens=*" %%f in ('dir /B /S /AD "%w%:\data\images"') do (
  if exist "%%f\*.wim" ( 
    ECHO found me some wims! let's continue.     
    GOTO actionmenu
  ) else (
    ECHO This script requires a wim repository folder to proceed. make sure you have
    ECHO properly populated the "\Images" folder before re-running this script
    goto end
  )
)
0
sthames42 3 Янв 2018 в 15:12