отсортируется каждый месяц...., в чем причина не желания сортировки на текущий месяц? В следующем месяце все равно надо же сортировать?
Последний вариант!! Все требования учтены!!!
Код:
![Выделить весь код](images/misc/selectcode.png)
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? было бы проще....
Код:
![Выделить весь код](images/misc/selectcode.png)
@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