#batch-file
#пакетный файл
Вопрос:
Это легко достижимо с помощью скриптов MS-DOS, или мне придется прибегнуть к C , Python, Perl или другим способам достижения этой цели?
Комментарии:
1. Вау! Вы действительно используете MS-DOS? Не думал, что это все еще живо…
2. На самом деле я имел в виду любой самый простой способ добиться этого при использовании Windows 7
3. команда dir сообщает количество файлов / папок
4. @Fredrik: он сообщает вам только количество файлов в текущем каталоге, он не включает файлы в подкаталогах (если только нет какого-то переключателя, о котором я не знаю — DOS не мой конек!)
5. dir / s является рекурсивным и сообщает общее количество файлов / папок
Ответ №1:
Чтобы быть самым простым, он должен пройти тест «моя бабушка может это сделать».
После тщательного сравнительного анализа я решил, что самым простым подходом было бы открыть каждую папку в проводнике Windows, посмотреть на количество файлов в строке состояния и использовать калькулятор для подсчета количества.
Это медленно, но эффективно.
Редактировать
Возможно, это не так просто, но, будучи опытным пользователем cygwin, я предпочитаю использовать команду find и wc.
find -type 'f' | wc -l
Комментарии:
1. Я имел в виду самый простой способ, но быстрее, чем открывать каждую папку в проводнике Windows.
2. @stanigator, ты воспринял меня слишком серьезно.
Ответ №2:
в cmd вы можете сделать:
set i=0
for /f %%G in ('dir /b /A-d <dirname>') do set /a i=i 1
в PowerShell (который доступен по умолчанию в Windows 7) вы можете сделать:
Get-ChildItem <dirname> | Where-Object { -not $_.PSIsContainer } | Measure-Object
Эти команды учитывают только файлы, если вы хотите также учитывать каталоги, удалите /A-d
для версии dos и Where-Object { -not $_PSIsContainer }
для команды powershell. Если вы хотите выполнить рекурсию в подкаталоги, используйте Get-ChildItem -Recurse
в powershell или добавьте /s
переключатель в команду dir в версии dos
Комментарии:
1. И если вы хотите также подсчитать количество файлов в подкаталогах, добавьте
/s
переключатель, который даст вам'dir /b /A-d /s <dirname>'
Ответ №3:
В Python это очень просто:
import os
walker = os.walk(path_to_search_root)
files = 0
for dir in walker:
files = len(dir[2]) #dir[2] is the list of files in the directory
print files