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

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] Поделитесь плиз Скрипт сортирующий файлы в папки по месяцу создания

Новый участник


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

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


Есть папка в ней много файлов их надо рассортировать в папки по месяцам за исключением файлов текущего месяца
Еслиб не текущий месяц то 12 xcopy /d решалибы проблемму
Поделитесь у кого есть скриптом сортирующим файлы в папки по месяцам

Отправлено: 11:50, 28-06-2010

 

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


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

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


Перенос файлов в уже готовые папки в зависимости от даты создания.



Код: Выделить весь код
Option Explicit
Dim FSO, oFile, oFolder, oFolderBox, oSubFolder, strNMonth    
Dim ScPath, ScPathBox      
ScPath = left(WScript.ScriptFullName, (Len(WScript.ScriptFullName))-(Len(WScript.ScriptName))-1)     
ScPathBox = ScPath & "\box"      
Set FSO = CreateObject("Scripting.FileSystemObject")    
Set oFolder = FSO.GetFolder(ScPath)    
Set oFolderBox = FSO.GetFolder(ScPathBox)       
For Each oFile In oFolder.Files        
If UCase(FSO.GetExtensionName(oFile.Path)) = "exe" Then           
strNMonth = Right("0" & CStr(Month(oFile.DateLastModified)),2)           
For Each oSubFolder In oFolderBox.SubFolders                
If Left(oSubFolder.Name, 2) = strNMonth Then _                    
oFile.Move oSubFolder.Path & "\" & oFile.Name            
Next        
End If    
Next
Хотя существует множество программ аналогичного назначения, но с большим набором функций...


Второй вариант (уже готовый и давно используемый) с созданием папок..., но в данном случае файлы имеют имя ops_project_дд.мм.гг.dwg

Код: Выделить весь код
Option Explicit 
   Dim objFSO, objFile

  Dim strPath2SourceFolder, strPath2RootDestFolder, strPath2DestFolder
  Dim intPrefix, strMonth  
  Dim intErrLevel    
 
  strPath2SourceFolder   = "C:\dir1\dir2\ops-sourse"
  strPath2RootDestFolder = "C:\dir1\dir2\ops-result"    
  intErrLevel = 0  
  intPrefix   = Len("ops_project_")    

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(Left(objFile.Name, intPrefix)) = UCase("ops_project_") And _            
      UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("dwg") Then   

      strMonth = Mid(objFSO.GetBaseName(objFile.Name), intPrefix + 3 + 1, 2) 
      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

Последний раз редактировалось deepred, 29-06-2010 в 13:03.

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

Отправлено: 13:32, 28-06-2010 | #2



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

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


Новый участник


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

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


Да но так я отсортирую и текущий месяц

Отправлено: 14:02, 28-06-2010 | #3


Новый участник


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

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


и как быть если месяцев несколько?

Отправлено: 14:34, 28-06-2010 | #4


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


Сообщения: 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


Новый участник


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

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


Спасибо что помогли

Отправлено: 08:50, 30-06-2010 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Скрипт создания ссылки, для GPO bombording Скриптовые языки администрирования Windows 6 27-09-2012 13:37
[решено] Скрипт создания файла данных через диологовое окно. как? Pozia AutoIt 22 22-12-2009 22:59
Любой язык - Батник (скрипт) для создания odbc ITSpec Скриптовые языки администрирования Windows 2 09-12-2009 10:32
Поделитесь ссылками на самые маленькие файлы всех "потребительских" форматов truvo Хочу все знать 5 07-06-2009 20:38
Скрипт для создания пользователей Ven Microsoft Windows NT/2000/2003 6 24-02-2008 23:57




 
Переход