|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Поделитесь плиз Скрипт сортирующий файлы в папки по месяцу создания |
|
VBS/WSH/JS - [решено] Поделитесь плиз Скрипт сортирующий файлы в папки по месяцу создания
|
Новый участник Сообщения: 20 |
Есть папка в ней много файлов их надо рассортировать в папки по месяцам за исключением файлов текущего месяца
Еслиб не текущий месяц то 12 xcopy /d решалибы проблемму Поделитесь у кого есть скриптом сортирующим файлы в папки по месяцам |
|
Отправлено: 11:50, 28-06-2010 |
Пользователь Сообщения: 140
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Да но так я отсортирую и текущий месяц
|
Отправлено: 14:02, 28-06-2010 | #3 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать и как быть если месяцев несколько?
|
Отправлено: 14:34, 28-06-2010 | #4 |
Пользователь Сообщения: 140
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Спасибо что помогли
|
Отправлено: 08:50, 30-06-2010 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|