Войти

Показать полную графическую версию : перенос файлов по маскам в другие директории


Berezkinav
21-09-2023, 13:03
Добрый день.

В папке находятся архивы .arj с разными названиями (в течения дня поступают новые). Необходимо что бы файлы которые начинаются по маскам %CUR% %MET% %CMT%, переносились в другую директорию, а все остальные файлы в этой папке (не подходящие под маски) перекидывались в другую директорию.

DJ Mogarych
21-09-2023, 14:05
файлы которые начинаются по маскам %CUR% %MET% %CMT% »
Пример приведите, непонятно, что это за маски применительно к файлам.

Berezkinav
21-09-2023, 14:27
Updates_to_reference_books_and_courses\Sourse в данной директории лежат файлы с названием CURM*; CURD*; METD*; и другие рандомные.
необходимо что файлы которые имеют название CURM*; CURD*; METD* переносились в Updates_to_reference_books_and_courses\Temp\Rate, все остальные файлы которые есть (не подходящие под название) переносились Updates_to_reference_books_and_courses\Temp\Spravochniki

DJ Mogarych
21-09-2023, 14:34
move Updates_to_reference_books_and_courses\Sourse\CURM* Updates_to_reference_books_and_courses\Temp\Rate
move Updates_to_reference_books_and_courses\Sourse\CURD* Updates_to_reference_books_and_courses\Temp\Rate
move Updates_to_reference_books_and_courses\Sourse\METD* Updates_to_reference_books_and_courses\Temp\Rate
move Updates_to_reference_books_and_courses\Sourse\* Updates_to_reference_books_and_courses\Temp\Spravochniki

Berezkinav
21-09-2023, 14:55
нашел вариант скрипта на терминале, немного неправильно сформировал запрос
необходима копирование части файлов по определённой маске (CURD*.ARJ CURM*.ARJ METD*.ARJ) в первую папку (Rate), а все оставшиеся файлы в другую папку (Spravochniki). За один цикл, без использования временной папки (сетевая папка Source где лежат файлы динамически обновляемая)
set LOG=C:\Updates_to_reference_books_and_courses\log.txt
set Sourse=C:\Updates_to_reference_books_and_courses\Sourse
set Rate=C:\Updates_to_reference_books_and_courses\Temp\Rate
set Sprav=C:\Updates_to_reference_books_and_courses\Temp\Spravochniki

pause

for %%f in (%Sourse%\*.ARJ) do if defined %Sourse%\CURD* == %%f xcopy %%f %Sprav% /Y >>%LOG%

pause

for %%f in (%Sourse%\*.ARJ) do if NOT %%f==CURD*.ARJ & NOT %%f==CURM*.ARJ & NOT %%f==METD*.ARJ xcopy %%f %Arhiv%\%date%\ /Y >>%LOG% & xcopy %%f %Sprav% /Y >>%LOG%

pause

for %%f in (%Sourse%\CURD*.ARJ) do xcopy %%f %Arhiv%\%date%\ /Y >>%LOG% & xcopy %%f %Rate% /Y >>%LOG% & del /s /q %%f >>%LOG%
for %%f in (%Sourse%\CURM*.ARJ) do xcopy %%f %Arhiv%\%date%\ /Y >>%LOG% & xcopy %%f %Rate% /Y >>%LOG% & del /s /q %%f >>%LOG%
for %%f in (%Sourse%\METD*.ARJ) do xcopy %%f %Arhiv%\%date%\ /Y >>%LOG% & xcopy %%f %Rate% /Y >>%LOG% & del /s /q %%f >>%LOG%

pause

копирование по маскам происходит, а другие оставшиеся (не подходящие под маску) не копируются

megaloman
21-09-2023, 16:36
@Echo Off
Cls
Set "BoxIn=Z:\Updates_to_reference_books_and_courses\Sourse"
Set "Rate=Z:\Updates_to_reference_books_and_courses\Temp\Rate"
Set "Sprav=Z:\Updates_to_reference_books_and_courses\Temp\Spravochniki"
Set "LOG=Z:\Updates_to_reference_books_and_courses\log.txt"

Set "Prefix=CURD CURM METD"
Set "Mask=*.ARJ"

>>"%LOG%" (Echo. &Echo +++++ %Date% %Time%)
Pushd "%BoxIn%" && (
>>"%LOG%" (
For %%f In (%Prefix%) Do 2>nul Move "%%f%Mask%" "%Rate%\"
2>nul Move "%Mask%" "%Sprav%\"
)
Popd
)
Pause
Exit /B 0

Berezkinav
22-09-2023, 10:27
правильно понимаю, данный параметр Set "Prefix=CURD CURM METD" будет искать именно по такому названию с пробелами? или одну из этих масок (перечисление)?

megaloman
22-09-2023, 13:53
Berezkinav, неправильно. Вы задаёте набор префиксов к каждому из которых приделывается маска. Без пробелов. Например, CURD*.ARJ CURM*.ARJ METD*.ARJ » и эти файлы перемещаются в указанную папку (путь нарисуйте свой), всё что останется по маске без префикса - в другую папку. А в чем проблема протестировать?




© OSzone.net 2001-2012