Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.86/14: Рейтинг темы: голосов - 14, средняя оценка - 4.86
midc
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 34
1

Что такое "число свободных байтов", возвращаемое командой DIR?

11.10.2012, 18:20. Просмотров 2509. Ответов 23
Метки нет (Все метки)

Как это может быть, что в пределах одной сессии командного процессора команда DIR (очень даже воспроизводимо) возвращет разные значения "bytes free"?
Я работаю с DOS / Windows около 20 лет и до вчерашнего дня не имел поняти, что подобное
c:\1>dir c:\fdeappdata\pacrat|findstr free
24 Dir(s) 170,920,792,064 bytes free

c:\1>dir c:\|findstr free
18 Dir(s) 15,617,818,624 bytes free

может в действительности произойти.

Прошу ответить на следующий вопрос:
Что означает число, выводимое командой DIR перед "bytes free" фразой?
Сопутствующие сведения
  • Я о-очень опытный пользователь;
  • findstr просто отсеивает несущественное для данного вопроса;
  • Windows Server 2003.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2012, 18:20
Ответы с готовыми решениями:

Установить для пользователя значение "FALSE" параметра "PasswordExpires" командой WMIC
wmic useraccount where "name='имя_пользователя' " set passwordexpires=false...

for /f "delims=" %%b in ('dir !DirName! /b /s /a-d') do () жрёт символы "!" и "^"
Добрый день, коллеги. День сегодня убил, но так и не понял что делать, может...

Почему в начале вывода команды DIR указываются две папки с именами "." и "..", хотя их нигде нет?
Привет. Почему в выдаче в начале первые две папки имеют имена "." и "..", хотя...

Как объяснить человеку по-простому что такое "Контроллер Домена"?
Добрый вечер! Возможно Вам этот вопрос покажется забавным, но я тут столкнулся...

"." не является внутренней или внешней командой
Добрый день! Пытаюсь в cmd выполнить команду ...

23
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
12.10.2012, 01:22 2
Намек для опытного пользователя: http://www.transl-gunsmoker.ru/2009/12/blog-post_28.html
0
midc
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 34
12.10.2012, 02:31  [ТС] 3
>>Как это может быть, что в пределах одной сессии командного процессора команда DIR (очень даже воспроизводимо) возвращет разные значения "bytes free"?

Статья говорит о том как считать. мой вопрос о том что считает DIR. "Намек для опытного пользователя" не понят.

Даю другой:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
c:\1>diskpart
 
Microsoft DiskPart version 5.2.3790.3959
Copyright (C) 1999-2001 Microsoft Corporation.
On computer: FDEFS1
 
DISKPART> list volume
 
  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0                      NTFS   Spanned      570 GB  Healthy
    C:\FDEAppDATA\
  Volume 1     C                NTFS   Simple        40 GB  Healthy    System
  Volume 2     D                       DVD-ROM         0 B  Healthy
 
DISKPART> exit
 
Leaving DiskPart...
 
c:\1>
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
12.10.2012, 11:35 4
Приведите содержимое файла, созданного скриптом:

Bash
1
2
dir /a c:|findstr /i fdeappdata> c:\property.txt
dir /a c:\fdeappdata|findstr /i pacrat>> c:\property.txt
0
midc
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 34
12.10.2012, 15:56  [ТС] 5
Показать _.bat
Bash
1
2
3
c:\1>type _.bat
dir /a c:|findstr /i fdeappdata> _property.txt
dir /a c:\fdeappdata|findstr /i pacrat>> _property.txt
иполнить его же
Bash
1
2
3
c:\1>_.bat
c:\1>dir /a c:  | findstr /i fdeappdata 1>_property.txt
c:\1>dir /a c:\fdeappdata  | findstr /i pacrat 1>>_property.txt
убедиться, что _property.txt "свежий"
Bash
1
2
3
4
c:\1>dir  _property.txt|findstr  _p&&date/t&&time/t
10/12/2012  07:20 AM                47 _property.txt
Fri 10/12/2012
07:20 AM
показать "содержимое файла, созданного скриптом" ("у-ти какая..."©)
Bash
1
2
3
c:\1>type _property.txt
10/11/2012  05:19 PM    <DIR>          PACRAT
c:\1>
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
12.10.2012, 17:55 6
Что, я неправильно написал скрипт, опустив слеш?
Bash
1
dir /a c:\|findstr /i fdeappdata> c:\_property.txt
Тогда скажи мне, умный человек, почему первый раз поток не ушел.

Добавлено через 10 минут
Понятно. Интерпретатор такую комбинацию не воспринимает как канал, но и синтаксическую ошибку не написал.
0
midc
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 34
12.10.2012, 18:12  [ТС] 7
Во-первых, прошу прощения за некоторую неоправданную (не верь глазам своим?) вольность в предыдущем моём сообщении.
Во-вторых, я очень мало что понял из Вашего последнего текста.
В-третьих, я модифицировал Ваш "скрипт", чтобы не "наследить" в корневой папке.
В-четвёртых, Вы случайно не в курсе дела, Что такое "число свободных байтов", возвращаемое командой DIR?

>>... умный человек...
Вы всё ещё меня недооцениваете?
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
12.10.2012, 18:55 8
Цитата Сообщение от midc Посмотреть сообщение
прошу прощения за некоторую неоправданную (не верь глазам своим?) вольность в предыдущем моём сообщении.
Принимается. И от меня тоже примите.

Цитата Сообщение от midc Посмотреть сообщение
Вы всё ещё меня недооцениваете?
О, если бы я Вас недооценивал, я бы сразу написал Вам ответ.
Хочу, чтобы Вы сами догадались.

Итак, что там выдает последний мой скрипт...
0
midc
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 34
12.10.2012, 19:21  [ТС] 9
01/24/2009 01:57 PM <JUNCTION> FDEAppDATA

>>я... бы сразу написал Вам ответ.
а или...
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
12.10.2012, 20:17 10
А теперь посмотрите ту же статью от Raymond Chen только в оригинале, особенно комментарии:
http://blogs.msdn.com/b/oldnewthing/archive/2004/12/28/336219.aspx

Или вот эту: http://hex.pp.ua/reparse-points.php

Слово JUNCTION ничего не напоминает?
На 9-ю строку Вашего поста № 3 обратили внимание?
1
midc
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 34
12.10.2012, 21:38  [ТС] 11
Насчёт Reparse Points очень познавательно, спасибо. Однако меня в данном вопросе больше интересуют не столько премудрости определения размера каталога (даже если бы таковой существовал), сколько, что означают 15GB и 170GB в моём исходном вопросе.
Раз уж Вы ссылаетесь на иноязычные источники, то позвольте мне привести своё мнение / догадку, высказанную на том же иноязыке пару дней назад:,
"Within mounted drives paradigm any valid path on basic drive, say, c: may point to a (recursively!) mounted folder, or a mounted folder mapped to an already mounted drive.
Now:
DIR <p> command types (besides other very useful things) the size of free space available on a physical hard drive, mapped to <p> or its nearest "parent" mounted folder (if any) within "mounted folders tree", which is not necessarily free space on the root c: drive..

I'd gladly accept this as an answer, should I know it's true.
I've just concocted it and I cannot find any documented confirmation of my "best guess".
As I mentioned above, "to type" here means "to put in STDOUT".
Был бы признателен за комментарии.

Да, и последнее (в этом сообщении): "Что такое "число свободных байтов" возвращаемое командой DIR?"
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
13.10.2012, 01:38 12
Ну ок, расскажу.

Это только мое личное утверждение, которое подтверждается фактами.

Dir (последняя ее строка) - отображает объем свободного места (в байтах) на разделе, где физически находится каталог, заданный как аргумент этой команды (или рабочий каталог, если такой аргумент опущен).

Так как fdeappdata является точкой монтирования (Junction point, симуляцией, указателем... как угодно), о чем свидетельствует пост № 3 и пост № 9, то физически папка находится в данном конкретном случае на другом разделе, а соответственно и свободное место определяется именно на нем. Поэтому цифры отличаются.

На счет базы знаний kb 307889 - я ее не читал, но реализация описанного в Вашем сообщении алгоритма создания рекурсивной директории есть в соседней статье того же Raymond Chen http://blogs.msdn.com/b/oldnewthing/archive/2004/12/27/332704.aspx Ее перевод http://www.transl-gunsmoker.ru/2009/12/blog-post_27.html
Вероятно, там же в diskmgmt.msc Вы найдете "точку входа" и для Вашего Spanned Volume.

Spanned Volume знаете что такое?
2
midc
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 34
13.10.2012, 02:34  [ТС] 13
>>Spanned Volume знаете что такое?
Как слышу, так и понимаю, тем более что я всегда ощущал дискомфорт из-за (подразумеваемого?) 1:1 "диск -- том" отношения:
C:\1>vol
Volume in drive C is OS
Volume Serial Number is 2090-02EB
C:\1>


Спасибо за подтверждение моей догадки. Я так вцепился в вопрос из-за того, что народ на работе запутался: "У нас что полный атас (5GB) или ещё протянем до реорганизации (170GB)?"

Не считаю вопрос полностью для себя закрытым, но возвращаться к нему до следующей угрозы "чрезвычайки" не намерен.

Всего хорошего, Dragokas.
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
13.10.2012, 04:28 14
Цитата Сообщение от midc Посмотреть сообщение
1:1 "диск -- том"


Попробуйте запустить Dir указав параметром сетевой диск - еще больше удивитесь.
0
midc
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 34
13.10.2012, 16:38  [ТС] 15
Возможно, следовало бы учесть разницу между "диск" и "partition" как в Вашей, так и в моей формулировке. Но для меня в данный момент это "не по Сеньке шапка".
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
13.10.2012, 16:58 16
Цитата Сообщение от midc Посмотреть сообщение
учесть разницу между "диск" и "partition" как в Вашей, так и в моей формулировке.
Цитата Сообщение от Dragokas Посмотреть сообщение
Dir (последняя ее строка) - отображает объем свободного места (в байтах) на разделе, где физически находится каталог, заданный как аргумент этой команды (или рабочий каталог, если такой аргумент опущен).
Цитата Сообщение от Dragokas Посмотреть сообщение
Попробуйте запустить Dir указав параметром сетевой диск - еще больше удивитесь.
Ну так как идете на эксперимент, попытавшись смонтировать на диск удаленный сетевой ресурс, нечто вроде:
Bash
1
subst X: \\192.168.1.10\Share$
а затем применив на нем команду Dir

Я не могу выложить скриншот, у меня выходной и сейчас под рукой нет локалки.
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
15.10.2012, 12:28 17
Итак, раунд 2 борьбы с определением free bytes команды Dir.

midc интересно Ваше мнение, скажем, предположение на счет количества свободного места у меня на разделе Y: (см. скриншот):

Сможете округлить без гугла - сколько у меня его там
(это малость риторический вопрос)
0
Миниатюры
Что такое "число свободных байтов", возвращаемое командой DIR?  
midc
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 34
16.10.2012, 03:19  [ТС] 18
Я знаю, стыдновато,но я не очень-то понимаю, что такое "сетевой диск".
Это тот, что присодинен к другому компьютеру (в проделах локальной сети)?
Или, может, это диск, который, как мой принтер, имеет собственный адрес в локальной сети?
В первом случае я предпочитаю называть его удалённым. Насчёт же второго я ничего не знаю.
Я привожу две сессии командного процессора CMD. Первая — на моей рабочей станции в домене FDE вторая — на сервере FDEFS1 (в домене DMZ), с: диск которого и является предметом рассмотрения.

Код
c:\1>net use|findstr "Z:"
OK           Z:        \\fdefs1\c$               Microsoft Windows Network

c:\1>dir \\fdefs1\pacrat\jhmi|findstr free
              12 Dir(s)  167,788,064,768 bytes free

c:\1>dir z:\fdeappdata\pacrat\jhmi|findstr free
              12 Dir(s)  15,537,471,488 bytes free
Несмотря на то, что, как лего видеть, обе команды DIR указывают на одну и ту же папку, количества свободных байтов различны.
Никакие "ну это потому что..." не спасают от диагноза: враньё. К тому же моя изящная догадка не выдержала первого же испытания.

Код
c:\1>hostname
FDEFS1

c:\1>dir \\fdefs1\pacrat\jhmi|findstr free
              12 Dir(s)  167,788,064,768 bytes free

c:\1>dir \\fdefs1\c$\fdeappdata\pacrat\jhmi|findstr free
              12 Dir(s)  15,537,467,392 bytes free

c:\1>dir c:\fdeappdata\pacrat\jhmi|findstr free
              12 Dir(s)  167,788,068,864 bytes free

c:\1>
То же относится и ко второй сессии.

Что касается Вашей сессии на картинке, то у меня, увы, нет предположений, только пара ассоциаций (1) 80 тыс. терабайт — это очень "приличный" диск.
(2) Давно на "Так ведь я же выдал ошибку", - я заметил: "Не ту", - и ошарашил собеседника: "Программа не имеет права врать".
Это же так просто...

Спасибо за содержательную дискуссию.
1
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
16.10.2012, 05:47 19
Как Вы могли наблюдать на моем скрине - у меня в хозяйстве нет на самом деле никакого дата-центра
Y: - это подключенная командой Subst сетевая папка другой машины в локальной сети.
Единственным разумным объяснением считаю баг команды Dir
Почему именно такие цифры? (ушло в рекурсию?) - думаю, скажут только разработчики. Кстати, можно попробовать у них и спросить.
Для информации: официально максимальный раздел NTFS - 16 Tb.

Исходя из этого, такое же утверждение, вероятно касается поданных Вами примеров:
1. dir z:\fdeappdata\pacrat\jhmi|findstr free
И что весьма неожиданно:
2. dir \\fdefs1\c$\fdeappdata\pacrat\jhmi|findstr free

Dir существовала еще очень задолго до появления NTFS, да и не только.
Скорее всего она и не рассчитана была на такого рода экстремальные испытания,
а в новых версиях интерпретатора (даже в Win7), скорее всего и не обновлялась.

Как видим, все действительно не так очевидно, как казалось на первый взгляд.

"Pacrat" - я так понял у Вас заодно является именем расшаренного сетевого ресурса одноименной папки на сервере FDEFS1.
1
midc
2 / 2 / 0
Регистрация: 11.10.2012
Сообщений: 34
16.10.2012, 15:43  [ТС] 20
Да.
Код
c:\1>net share |findstr -i pacrat
PACRAT       C:\FDEAppDATA\PACRAT
Цитата Сообщение от Dragokas Посмотреть сообщение
...подтверждается фактами...
"Ну-ну..." ©
0
16.10.2012, 15:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2012, 15:43

«"rar" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.»
Когда ставил эту винду(ХР), пришлось пару файлов пропустить, диск был немного...

«"net" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.»
Всем привет. Прежде чем задать вопрос поискал в инете и на форумах..но не...

«"msg" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.»
В общем задача , сделать .BAT который при открытии выкинет тебе окно типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru