2010-09-28 4 views
0

Я пытаюсь найти только в одной строке количество файлов (* .rar) в каталоге.Количество файлов в каталоге

для этого я использую команды:

for /f "delims=" %i in ('find /c ".rar" "D:\backup e ckpdb ept-icd\test\unload\lista_files_rar.txt"') do echo %i 

но значение% я у меня есть в конце концов, это: D: \ BACKUP E CKPDB EPT-ICD \ TEST \ UNLOAD \ LISTA_FILES_RAR.TXT: 8

Я хотел бы получить только номер 8, поэтому вместо эхо значения я бы присвоил значение переменной.

Я использую командную строку: dir/b * .rar | find/c ".rar" , что он возвращает значение rar-файлов в каталоге, но я не могу присвоить значение переменной, например: dir/b * .rar | find/c ".rar" | набор/а файлы =

Я пытался также использовать ключевое слово маркеры = 2, но она не работает

PS Если это возможно сделать только с помощью команды находят также лучше

ответ

1

См here, например, на счет файлов

Или вы можете просто сделать что-то вроде этого (n ВЗ испытания)

for /F %%j in ('dir /B *.rar ^| find /C /V ""') do set count=%%j 
0

Это возвращает просто число; что может быть чище способ сделать это, но Unfortuantly «найти» не может принять это вход из трубы (то есть, я не могу сделать dir | find):

@echo off 
dir /b *.rar> out.tmp 
for /f "usebackq tokens=3" %%i in (`find /c "rar" out.tmp`) do echo %%i 
del out.tmp 
0

Try «delims =: лексемы = 3 "

вы обычно будет иметь два двоеточия в результате, один за буквой диска и один перед номером вы хотите, так что ваш номер должен быть маркер 3

0

Спасибо, я думаю, что я буду использовать

для/F %% J в ('реж/B * .rar^| найти/C/V «» ") делать множество граф = %% J

user135127

Таким образом, я думаю также, если somethink в названии директории результат должен всегда оставаться такой же.

который представляет собой разницу между:

реж/B * .rar^| найти/C/V "" и

dir/B * .rar^| find/C ".rar"?

0
for /f %a in ('dir "*.txt" ^| find "File(s)"') do set Count=%a 

дает

set Count=36 

или вы можете использовать арифметический набор и отсроченной переменной среды расширения

set count=0 
for %a in (*.txt) do @set /a Count=!Count!+ 1 > nul 
echo %count% 

дает

Count=36 
Смежные вопросы