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

Показать сообщение отдельно

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


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

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


отсортируется каждый месяц...., в чем причина не желания сортировки на текущий месяц? В следующем месяце все равно надо же сортировать?

Последний вариант!! Все требования учтены!!!


Код: Выделить весь код
Option Explicit 
Dim objFSO, objFile
Dim strPath2SourceFolder, strPath2RootDestFolder, strPath2DestFolder
Dim intPrefix, strMonth  
Dim intErrLevel    
strPath2SourceFolder   = "F:\exe\"
strPath2RootDestFolder = "F:\exe\outfolder\"    
intErrLevel = 0  
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")      
If objFSO.FolderExists(strPath2SourceFolder) Then
If objFSO.FolderExists(strPath2RootDestFolder) Then         
For Each objFile In objFSO.GetFolder(strPath2SourceFolder).Files
if UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("exe") And _
DateDiff("M", objFile.DateLastModified, Now) <> 0 Then   
strMonth = mid(objFSO.GetBaseName(objfile.DateLastModified),+4) & "." & Left(objFSO.GetExtensionName(objfile.DateLastModified),4)
strPath2DestFolder = objFSO.BuildPath(strPath2RootDestFolder, strMonth)
If Not objFSO.FolderExists(strPath2DestFolder) Then
objFSO.CreateFolder strPath2DestFolder          
End If                                   
objFile.Move strPath2DestFolder & "\"          
End If          
Next      
Else          
WScript.Echo "Destination folder [" & strPath2RootDestFolder & "] is not exists." 
intErrLevel = 2      
End If
Else
WScript.Echo "Source folder [" & strPath2SourceFolder & "] is not exists."     
intErrLevel = 1
End If 
Set objFSO = Nothing 
WScript.Quit intErrLevel
Два момента:

1. Отработку я сделал для файлов имеющий "ext" - exe, т.к. делал под себя (чтобы не просто так), если это не нужно, то достаточно просто исключить строку с определением Ucase ("" UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("exe") "");


2. В критерий даты можно выставить и "DateLastaccess" и "DateCreated" (не только "DateLastModified").

И почему не *.bat? было бы проще....

Код: Выделить весь код
@Echo Off&&Chcp 866    

rem Указываем dir-рию для обработки   
Set $SCR=F:\exe    

rem Получаем имена файлов по критерию (т.е. не имеющих изменений в тек. месяце)  
for /F "tokens=2-3,6* Delims=. " %%a In ^
('DIR /a-d /tw %$SCR% ^| Find /i "%date:~-4%"') do (
                                          set ch=%%a.%%b
                                          set cell=%%c.%%d
                                          call :sorted_move)
goto :eof      

rem Создаем папку с имененем, содержащим дату изменения и перемещаем файлы
:sorted_move    

if NOT "%ch%"=="%date:~3%" ((if not exist "%$SCR%\sorted\dir_%ch%" ^
                              md %$SCR%\sorted\dir_%ch%
                              move /y %$SCR%\%cell% %$SCR%\sorted\dir_%ch%\%cell%
                              )) else goto :eof

Последний раз редактировалось deepred, 09-07-2010 в 23:39.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:10, 28-06-2010 | #5