Пакетный сценарий - ЗА и ЕСЛИ - PullRequest
0 голосов
/ 22 марта 2012

Просто новичок в пакетном написании сценариев и у меня возникла проблема: меня попросили перечислить все текстовые файлы, имена которых состоят из 7 букв, на всем диске c: \ и вывести его в файл.Я не могу понять.

После бесконечных часов поиска в Google я придумал это:

for /R C:\ %i in (.\*) do if %~ni==???????.txt echo %i > file.txt

Теперь я понимаю, что это, вероятно, неправильно из-за факта ... это не работает.

Заранее спасибо.Джон В.

Ответы [ 2 ]

3 голосов
/ 22 марта 2012

Я думаю, что это сделает это.Вам на самом деле не нужен пакет файл .

dir /s /b C:\*.txt | findstr "\\.......\.txt$" > files.txt

Обновление:

Чтобы заставить его работать для 123\123.txt используйте

dir /s /b C:\*.txt | findstr "\\[^\\][^\\][^\\][^\\][^\\][^\\][^\\]\.txt$" > files.txt
0 голосов
/ 22 марта 2012

Я бы поместил код в пакетный файл, а затем вы должны удвоить знаки процента цикла FOR.
Поскольку FOR / R поддерживает некоторые полезные функции, такие как поиск масок файлов, вы можетеиспользовать этот.

Но ????найдет все файлы с максимальным количеством вопросительных знаков, а не только точное совпадение.
Поэтому я проверю имя файла позже, если оно будет содержать не менее 7 символов

setlocal EnableDelayedExpansion
for /R C:\temp\ %%i in (???????.txt) do (
  set "filename=%%~ni"
  if "!filename:~6,1!" NEQ "" (
    echo has 7 characters %%i
  )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...