ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату
Соббственно скрипт должен ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату. Пишет какие то ошибки, якобы что то в синтаксисе неправильно. Помогите пожалуста найти ошибку.
@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%
)
|
DeGReeS, пора научиться пользоваться тэгом [code].
Цитата:
Цитата DeGReeS
Посмотрите почему не работает скрипт »
|
Сначала было бы неплохо услышать, что он, собственно, должен делать?
Сразу говорю, что ошибок куча.
|
Цитата:
Цитата Iska
Сначала было бы неплохо услышать, что он, собственно, должен делать? »
|
Соббственно скрипт должен ходить по каталогам не глубже второго вложенного и считать файлы за текущую дату. Пишет какие то ошибки, якобы что то в синтаксисе неправильно. Помогите пожалуста найти ошибку.
|
Цитата:
Цитата 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
|
Цитата:
Цитата 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
имя целевого каталога должно оканчиваться обратным слэшем
|
Спасибо 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 [Отправка смс]
)
Вопрос решен. Тему можно закрывать. Всем спасибо.
|
DeGReeS, Вы принципиально «кладёте» на оформление кода тэгами или как?
|
Цитата:
Цитата Iska
То есть, искать файлы в текущем каталоге и в находящихся в нём каталогах, так? Или — искать файлы в текущем каталоге, в находящихся в нём каталогах и плюс ещё один уровень каталогов вниз? »
|
Допустим есть каталог c:\temp\. внутри есть еще каталоги. Внутри этих каталогов есть еще каталоги. Также везде есть файлы. Нужно в исходном каталоге и в первых вложенных папках найти все папки и файлы текущей даты и постичать сколько их.
С повер шеллом не работал.
ЗЫЖ про теги не принципиально.
Интересно бы посмотреть как на повер шелле можно решить данную задачу.
Тему можно продолжить.
|
Цитата:
Цитата 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
|
Время: 15:31.
© OSzone.net 2001-