Это не в одной строке, но он работает без временного файла, циклически повторяя результаты команды dir
.Это будет работать внутри командного файла:
setlocal enableextensions
for /F %%s in ('dir /b /o:-d') do (
if "%%s"=="mk.bat" echo found & goto :eof
echo not found & goto :eof
)
С небольшим усилием вы можете сделать это и в одной строке:
cmd /e:on /c "@(for /F %s in ('dir /b /o:-d') do @(if "%s"=="mr.bat" echo found & exit /b) & @(echo not found & exit /b ))"
Обратите внимание на пару отличий:
- Использование (больше) скобок вместо новых строк для группировки команд,
- Не используйте
goto :eof
, потому что в этой настройке это не будет работать, - Вместо, используйте
exit /b
для выхода из сценария (также можно использовать в приведенном выше сценарии), - Оберните все это в двойные кавычки и передайте его в cmd, чтобы предотвратить выход из текущей оболочки.Используйте
/e:on
, хотя вы также можете запустить команду с setlocal enableextensions &
, - . Использовать
@
, чтобы подавить дополнительный вывод обрабатываемых подкоманд.