PDA

Показать полную графическую версию : [решено] ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату


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

@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%
)

Iska
15-08-2013, 09:14
DeGReeS, пора научиться пользоваться тэгом [code] (http://forum.oszone.net/misc.php?do=bbcode#code).

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

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

DeGReeS
15-08-2013, 10:55
Сначала было бы неплохо услышать, что он, собственно, должен делать? »

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

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

Помогите пожалуста найти ошибку. »
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

amel27
16-08-2013, 05:49
скрипт должен ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату »
@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имя целевого каталога должно оканчиваться обратным слэшем

DeGReeS
16-08-2013, 17:53
Спасибо 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 [Отправка смс]
)

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

Iska
16-08-2013, 18:08
DeGReeS, Вы принципиально «кладёте» на оформление кода тэгами или как?

DeGReeS
26-08-2013, 15:38
То есть, искать файлы в текущем каталоге и в находящихся в нём каталогах, так? Или — искать файлы в текущем каталоге, в находящихся в нём каталогах и плюс ещё один уровень каталогов вниз? »

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

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

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

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

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

Iska
26-08-2013, 17:43
ЗЫЖ про теги не принципиально. »
Поверьте, не только очень принципиально, но и весьма иллюстрирует наплевательское отношение участника к окружающим.

Допустим есть каталог 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




© OSzone.net 2001-2012