Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату

Ответить
Настройки темы
CMD/BAT - [решено] ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату

Пользователь


Сообщения: 54
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: DeGReeS
Дата: 15-08-2013
Соббственно скрипт должен ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату. Пишет какие то ошибки, якобы что то в синтаксисе неправильно. Помогите пожалуста найти ошибку.

@echo off

set pathcount=0
set Max=0

for /r "C:\" /d %%i in (*) do (
:loop
set pathcount=pathcount+1
if %pathcount%>=3 goto :loop
for /r ""+%%i+"\" %%x in (*) do (
set F.DT=%%~ti
if not "!F.DT!"=="" (
set F.Year=!%F.DT:~6,4!
set F.Month=!%F.DT:~3,2!
set F.Day=!%F.DT:~0,2!
set F.mytime=""+%F.Day+"."+%F.Month+"."+%F.Year
)

if %F.mytime%==%TIME% (
set Max=Max+1
)
)
)
if %Max%<=25 (
@echo %Max%
)

Отправлено: 08:53, 15-08-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


DeGReeS, пора научиться пользоваться тэгом [code].

Цитата DeGReeS:
Посмотрите почему не работает скрипт »
Сначала было бы неплохо услышать, что он, собственно, должен делать?

Сразу говорю, что ошибок куча.

Отправлено: 09:14, 15-08-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 54
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Сначала было бы неплохо услышать, что он, собственно, должен делать? »
Соббственно скрипт должен ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату. Пишет какие то ошибки, якобы что то в синтаксисе неправильно. Помогите пожалуста найти ошибку.

Отправлено: 10:55, 15-08-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата DeGReeS:
Соббственно скрипт должен ходить по каталогам не глубже второго вложенного »
То есть, искать файлы в текущем каталоге и в находящихся в нём каталогах, так? Или — искать файлы в текущем каталоге, в находящихся в нём каталогах и плюс ещё один уровень каталогов вниз?

Цитата DeGReeS:
Помогите пожалуста найти ошибку. »
DeGReeS, там куча ошибок. Как логических, так и синтаксических.

Я как-то не особо представляю, как можно удобно совместить такие условия поиска. Если Вас устроит — PowerShell:
Код: Выделить весь код
$sRootPath = "E:\Песочница\0310"

(Get-ChildItem -Path $sRootPath -Recurse | Where-Object -FilterScript {
     ($_.CreationTime).Date -eq (Get-Date).Date -and -not $_.PSIsContainer -and $_.FullName -notmatch ($sRootPath + "\.*\.*\.*").Replace("\", "\\")
}).Length

Отправлено: 19:21, 15-08-2013 | #4


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата DeGReeS:
скрипт должен ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату »
Код: Выделить весь код
@echo off
setlocal EnableDelayedExpansion

set "ROOT=C:\"
set "$R=%ROOT:\=\\%"
set "$R=%$R:.=\.%"

for /f "delims=" %%a in ('
dir/b/s/a-d %ROOT%*^|findstr/beirc:"%$R%[^\\]*" /c:"%$R%[^\\]*\\[^\\]*" /c:"%$R%[^\\]*\\[^\\]*\\[^\\]*"
') do if not "%%~ta"=="" ( set "$TA=%%~ta"
 if "!$TA:~,10!"=="!DATE!" set/a FileCount+=1
)

echo %FileCount%
pause>nul
имя целевого каталога должно оканчиваться обратным слэшем
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:49, 16-08-2013 | #5


Пользователь


Сообщения: 54
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо amel27. Немного модифицировал скрипт под свои нужды. Использую для проверки создались ли бекапы, если не все отправляем смс. Может кому пригодится.


@echo off
setlocal EnableDelayedExpansion

set "ROOT=C:\temp\"
set "$R=%ROOT:\=\\%"
set "$R=%$R:.=\.%"

for /f "delims=" %%a in ('
dir/b/s/a %ROOT%*^|findstr/beirc:"%$R%[^\\]*" /c:"%$R%[^\\]*\\[^\\]*"
') do if not "%%~ta"=="" ( set "$TA=%%~ta"
if "!$TA:~,10!"=="!DATE!" set/a FileCount+=1
)


if %FileCount% LEQ 25 (
echo %FileCount%
rem call [Отправка смс]
)

Вопрос решен. Тему можно закрывать. Всем спасибо.

Отправлено: 17:53, 16-08-2013 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


DeGReeS, Вы принципиально «кладёте» на оформление кода тэгами или как?

Отправлено: 18:08, 16-08-2013 | #7


Пользователь


Сообщения: 54
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
То есть, искать файлы в текущем каталоге и в находящихся в нём каталогах, так? Или — искать файлы в текущем каталоге, в находящихся в нём каталогах и плюс ещё один уровень каталогов вниз? »
Допустим есть каталог c:\temp\. внутри есть еще каталоги. Внутри этих каталогов есть еще каталоги. Также везде есть файлы. Нужно в исходном каталоге и в первых вложенных папках найти все папки и файлы текущей даты и постичать сколько их.

С повер шеллом не работал.

ЗЫЖ про теги не принципиально.

Интересно бы посмотреть как на повер шелле можно решить данную задачу.

Тему можно продолжить.

Отправлено: 15:38, 26-08-2013 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата DeGReeS:
ЗЫЖ про теги не принципиально. »
Поверьте, не только очень принципиально, но и весьма иллюстрирует наплевательское отношение участника к окружающим.


Цитата DeGReeS:
Допустим есть каталог c:\temp\. внутри есть еще каталоги. Внутри этих каталогов есть еще каталоги. Также везде есть файлы. Нужно в исходном каталоге и в первых вложенных папках найти все папки и файлы текущей даты и постичать сколько их. »
Код: Выделить весь код
$sRootPath = "c:\temp"

(Get-ChildItem -Path $sRootPath -Recurse | Where-Object -FilterScript {
     ($_.CreationTime).Date -eq (Get-Date).Date -and `
     $_.FullName -notmatch ($sRootPath + "\.*\.*\.*").Replace("\", "\\")
}).Length

Отправлено: 17:43, 26-08-2013 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование файлов за текущую дату! erorr Скриптовые языки администрирования Windows 14 27-10-2016 22:13
CMD/BAT - нужно извлечь из архива определенные файлы за текущую дату alek2012 Скриптовые языки администрирования Windows 0 20-06-2012 15:24
CMD/BAT - распаковать все файлы с расширением 7z в каталог, содержащий текущую дату Sylest Скриптовые языки администрирования Windows 4 22-03-2012 10:16
CMD/BAT - файлы разобрать по каталогам в соответствии с датой и пользователем Hronop Скриптовые языки администрирования Windows 2 21-02-2012 20:06
CMD/BAT - копирование файлов за текущую дату с сервера на сервер 6a6yko Скриптовые языки администрирования Windows 10 21-06-2011 13:00




 
Переход