|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - скрипт сравнение файлов и копирования по части имени |
|
CMD/BAT - скрипт сравнение файлов и копирования по части имени
|
Новый участник Сообщения: 2 |
Подскажите с такой проблемой есть 2 папки.
В папке D:\1 лежат файлы 5454_6546464564_56464546666_029(отработан).txt, причем цифры могут быть любые, неизменным остается только статус (отработан) в имени. В папке D:\2 находятся файлы с такими же именами, но без статуса (отработан) Собственно нужно сравнить все файлы в обеих папках и скопировать из папки 2 в папку 1 только файлы, у которых нет дублей со статусом (обработан) в папке 1. Кучу тем пересмотрел, никак не получается. Пока временным решением сделал батник с копированием по времени создания, но это не то. Помогите кто может. |
|
Отправлено: 15:33, 22-01-2020 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата mallonih:
Вот тупо по количеству цифр (на WSH): Скрытый текст
Option Explicit Dim strSourceFolder Dim strDestFolder Dim objFSO Dim objRegExp Dim objFile If WScript.Arguments.Count = 2 Then Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") strSourceFolder = objFSO.GetAbsolutePathName(WScript.Arguments.Item(0)) strDestFolder = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1)) If objFSO.FolderExists(strSourceFolder) Then If objFSO.FolderExists(strDestFolder) Then Set objRegExp = WScript.CreateObject("VBScript.RegExp") objRegExp.Pattern = "^\d{4}_\d{10}_\d{11}_\d{3}\.txt$" For Each objFile In objFSO.GetFolder(strSourceFolder).Files If objRegExp.Test(objFile.Name) Then If Not objFSO.FileExists(objFSO.BuildPath(strDestFolder, objFSO.GetBaseName(objFile.Name) & "(отработан)." & objFSO.GetExtensionName(objFile.Name))) Then objFile.Copy strDestFolder & "\" End If End If Next Else WScript.Echo "Can't find destination folder [" & strSourceFolder & "]." WScript.Quit 3 End If Else WScript.Echo "Can't find source folder [" & strSourceFolder & "]." WScript.Quit 2 End If Set objFSO = Nothing Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder> <Destination folder>" WScript.Quit 1 End If WScript.Quit 0 Исходный и целевой каталоги задаются аргументами скрипта. Если это всегда одни и те же каталоги — можете «ручками» вписать их, наподобие: Скрытый текст
Option Explicit Dim strSourceFolder Dim strDestFolder Dim objFSO Dim objRegExp Dim objFile Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") strSourceFolder = "D:\1" strDestFolder = "D:\2" If objFSO.FolderExists(strSourceFolder) Then If objFSO.FolderExists(strDestFolder) Then Set objRegExp = WScript.CreateObject("VBScript.RegExp") objRegExp.Pattern = "^\d{4}_\d{10}_\d{11}_\d{3}\.txt$" For Each objFile In objFSO.GetFolder(strSourceFolder).Files If objRegExp.Test(objFile.Name) Then If Not objFSO.FileExists(objFSO.BuildPath(strDestFolder, objFSO.GetBaseName(objFile.Name) & "(отработан)." & objFSO.GetExtensionName(objFile.Name))) Then objFile.Copy strDestFolder & "\" End If End If Next Else WScript.Echo "Can't find destination folder [" & strSourceFolder & "]." WScript.Quit 3 End If Else WScript.Echo "Can't find source folder [" & strSourceFolder & "]." WScript.Quit 2 End If Set objFSO = Nothing WScript.Quit 0 |
|
Отправлено: 18:21, 22-01-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось DJ Mogarych, 22-01-2020 в 20:30. Отправлено: 20:23, 22-01-2020 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось Iska, 22-01-2020 в 23:24. Отправлено: 20:51, 22-01-2020 | #4 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать В переменную до обработки? Да, но здесь оно только один раз встречается, и вроде как не foreach, дерготни по выполнению листинга для каждого файла нет.
Да и хотелось "батник" сделать. |
|
------- Отправлено: 22:11, 22-01-2020 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Ещё раз посмотрел логи Process Monitor'а — таки да, Вы правы: один раз.
|
Отправлено: 23:25, 22-01-2020 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось megaloman, 23-01-2020 в 02:49. Отправлено: 00:01, 23-01-2020 | #7 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Всем огромное спасибо! Воспользовался решением DJ Mogarych, отлично работает!
|
Отправлено: 09:21, 23-01-2020 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Скрипт который раскидывает файлы по папкам, с частью имени этих файлов | username-qq | Скриптовые языки администрирования Windows | 6 | 06-10-2018 18:30 | |
CMD/BAT - [решено] извлечение имени файлов, а также части имени с дописанием | Alexander_88 | Скриптовые языки администрирования Windows | 7 | 09-05-2015 01:45 | |
CMD/BAT - [решено] Сравнение файлов по части имени | sampir | Скриптовые языки администрирования Windows | 2 | 18-11-2012 19:57 | |
CMD/BAT - Сравнение файлов по имени | stasy9110 | Скриптовые языки администрирования Windows | 1 | 04-12-2011 21:27 | |
CMD/BAT - [решено] Скрипт сортировки и копирования файлов по маске | Daemonstar | Скриптовые языки администрирования Windows | 2 | 25-09-2010 15:47 |
|