Трубопровод командной строки, соответствующий первой строке вывода - PullRequest
0 голосов
/ 14 октября 2018

Есть ли способ добиться следующего с помощью одной команды командной строки с использованием каналов?

  1. Вывести список файлов в порядке убывания даты изменения (dir / b / o: -d)
  2. Проверьте, является ли первая строка вышеприведенного вывода "checkum.txt"
  3. Если есть совпадение, вывод "найден", иначе "не найден"

Япытаясь избежать создания временного файла, перенаправив вывод команды «dir» выше, а затем прочитав первую строку в файле, чтобы проверить совпадение.

1 Ответ

0 голосов
/ 14 октября 2018

Это не в одной строке, но он работает без временного файла, циклически повторяя результаты команды 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 &,
  • . Использовать @, чтобы подавить дополнительный вывод обрабатываемых подкоманд.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...