Пакетный файл, dir / findstr в цикле for

позвольте мне начать с признания, что я полный нуб в пакетных файлах... и язык программирования в целом.
Я пытаюсь написать пакетный файл, который позволяет пользователю вводить частичная filename, и он будет искать десятки подкаталогов, находить и открывать все pdf-файлы, имя которых содержит пользовательский ввод. Я ожидаю, что он найдет от 2 до 8 разных файлов pdf.

Я могу использовать следующее, чтобы вернуть файл-пути

set /p Number="Enter the Job-Shaft Number "

echo Searching folders

dir /b /s "*.pdf" | findstr /i "%Number%"

но когда я пытаюсь обернуть его в цикл for, чтобы я мог что-то с ним сделать, у меня возникают проблемы:

for %%G in ('dir /b /s "*.pdf" | findstr /i "%Number%"') do echo %%G

Кажется, ему не нравится труба. Есть предложения?

P.S. Я хочу, чтобы он на самом деле открыл pdf-файлы не только echo, но я еще не дошел до этого. Если я не могу заставить его работать сейчас, нет смысла усложнять все еще.

2
задан Gumbi
14.11.2022 3:40 Количество просмотров материала 2926
Распечатать страницу

1 ответ

чтобы выполнить команду, вам нужно

  1. вставить /f сразу за и также
  2. вставить "delims=" до не маркировки продукции

    (по умолчанию "tokens=1 and delims= " было бы отрезать после пробела)
  3. побег символ ^|, чтобы передать его на вторичный cmd.exe, который выполняется за кулисами.

for /f "delims=" %%G in ('dir /b /s "*.pdf" ^| findstr /i "%Number%"') do echo %%G

If %Number% действительно представляет собой число нет необходимости чтобы использовать /i переключатель

1
отвечен LotPings 2022-11-15 11:28

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх