каталог recurse для расширения файла с итогом? - PullRequest
2 голосов
/ 14 декабря 2009

Я хочу знать, сколько дискового пространства используется zip-файлами (или любым другим расширением) в определенном дереве каталогов. Возможно ли это в командной строке (в пакетной программе)?

Я могу перечислить их, то есть: dir / s * .zip или используя "forfiles": forfiles / p d: \ wincap / s / m * .zip / c "cmd / c echo @fsize"

Мне это нужно в пакетной программе, потому что я хочу запустить его на 100+ серверах (w2k3). Я привык к Unix / Linux, и DOS вызывает у меня головную боль;)

Идеи

Спасибо! Рон

Ответы [ 3 ]

0 голосов
/ 14 декабря 2009

Вот модифицированная версия найденной: http://en.kioskea.net/forum/affich-42442-dos-command-batch-file-to-find-a-folder-size

@echo off
setLocal EnableDelayedExpansion
set /a value=0
set /a sum=0 
FOR /R %1 %%I IN (%2) DO (
set /a value=%%~zI/1024/1024
set /a sum=!sum!+!value!
)
@echo Size is: !sum!  MB

Чтобы избежать переполнения, он сразу преобразует значения в МБ, поэтому округляет и, таким образом, занижает итоговое значение, но, надеюсь, это, по крайней мере, приведет вас на правильный путь. Сохраните его как dirsize.bat и вызовите его с каталогом в качестве первого параметра и шаблоном для сопоставления в качестве второго:

dirsize c:\ *.zip
0 голосов
/ 15 декабря 2009

Если вы можете загружать материалы на свой компьютер, вы все равно можете использовать инструменты Unix, например, du.

du *zip

проверить GNU tools .

0 голосов
/ 14 декабря 2009

Вы можете попробовать в команде , возможно, это поможет запустить команду удаленно.

Пример: в командной строке DOS написать > at \\localhost dir /s *.zip (localhost может быть 192.bla.bla.bla, что вы хотите назвать удаленным)


Дополнительная помощь

The AT command schedules commands and programs to run on a computer at
a specified time and date. The Schedule service must be running to use
the AT command.

AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
    [ /EVERY:date[,...] | /NEXT:date[,...]] "command"

\\computername     Specifies a remote computer. Commands are scheduled on the
                   local computer if this parameter is omitted.
id                 Is an identification number assigned to a scheduled
                   command.
/delete            Cancels a scheduled command. If id is omitted, all the
                   scheduled commands on the computer are canceled.
/yes               Used with cancel all jobs command when no further
                   confirmation is desired.
time               Specifies the time when command is to run.
/interactive       Allows the job to interact with the desktop of the user
                   who is logged on at the time the job runs.
/every:date[,...]  Runs the command on each specified day(s) of the week or
                   month. If date is omitted, the current day of the month
                   is assumed.
/next:date[,...]   Runs the specified command on the next occurrence of the
                   day (for example, next Thursday).  If date is omitted, the
                   current day of the month is assumed.
"command"          Is the Windows NT command, or batch program to be run.
...