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

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

Ответить
Настройки темы
CMD/BAT - [решено] Перемещение и переименование файлов
it3 it3 вне форума

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


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

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


Доброго дня всем!
Подсобите пожалуйста BAT'ником.
Есть папка с файлами "NaklScan":
"2018-01-18_(1).tif",
"2018-01-18_(2).tif",
"2018-01-18_(3).tif",
"2018-01-18_(4).tif",
"2018-01-18_(5).tif",
"2018-01-18_(6).tif",
... ... ... ... ... ... ...
"2018-01-18_(7000).tif",
... ... ... ... ... ... ...
которая после 3000 файлов начинает долго открываться (т.к. строится список).
Нужно чтобы из этой папки (NaklScan) файлы перемещались в другую папку (NaklScan5) - предположим по 100 шт.

Но загвоздка в том, что после перемещения файлов:
"2018-01-18_(1).tif",
"2018-01-18_(2).tif",
"2018-01-18_(3).tif",
"2018-01-18_(4).tif",
"2018-01-18_(5).tif",
"2018-01-18_(6).tif",
... ... ... ... ... ... ...
"2018-01-18_(7000).tif",
... ... ... ... ... ... ...
в папку "NaklScan5", в папке "NaklScan" будут снова создаваться файлы с такими же именами.

Т.е. нужно чтобы при перемещении в папку "NaklScan5" порядковый номер продолжался:

"2018-01-18_(7001).tif",
"2018-01-18_(7002).tif",
"2018-01-18_(7003).tif",
"2018-01-18_(7004).tif",
"2018-01-18_(7005).tif",
"2018-01-18_(7006).tif".

Отправлено: 11:25, 11-01-2018

 

Ветеран


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

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


Цитата it3:
которая после 3000 файлов начинает долго открываться »
тогда почему сразу не предусмотреть заполнение таким образом, вошли в папку if кол-во==1000 вышли и т.д. и лучше это сразу делать (надо целиком знать задачу, что когда и как формирует файлы), а не перемещать потом, а сейчас ..., bat долго будет переваривать такие количества, тут лучше PS подключить.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:48, 11-01-2018 | #2



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

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

it3 it3 вне форума Автор темы

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


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

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


Цитата alpap:
тогда почему сразу не предусмотреть заполнение таким образом, вошли в папку if кол-во==1000 вышли и т.д. и лучше это сразу делать (надо целиком знать задачу, что когда и как формирует файлы), а не перемещать потом, а сейчас ..., bat долго будет переваривать такие количества, тут лучше PS подключить. »
Файлы сканируются в один каталог, после чего они распознаются и переносятся в другой каталог для дальнейшей обработки. Нельзя раскидать по каталогам - по 1000 файлов!

Отправлено: 14:20, 11-01-2018 | #3


Аватара для Elven

Ветеран


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

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


я так понимаю дело выглядит приблизительно так:
- что-то там сканируется в tif
- tif распознается
- tif переносится в другой каталог для последующей обработки (интересно для какой, хотя к делу это и не относится)

как происходит распознавание? учитывая приведенные числа - тоже скриптом, или софт какой-то хитрый который на это нацелен?
Если скрипт - дописать Перенос в другой каталог после распознавания. Если софтом - нужно разбираться к чему привязываться (например как определить что файл уже распознан и готов к переносу?)
чтобы нумерация была сквозная можно либо искать максимальное по номеру имя в "NaklScan5" и прибавлять к нему 1 (или 2,3,5,7000 - как задумано, в общем), либо еще проще - записывать номер последнего перенесенного файла в, например, текстовик, и при переносе очередного файла - читать и прибавлять опять же столько сколько нужно.
Где я не прав? В каком месте нужна помощь?

Отправлено: 14:42, 11-01-2018 | #4

it3 it3 вне форума Автор темы

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


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

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


Вопрос касается сканирования (не распознавания).
Распознавания не берем в счёт.
Т.е. есть программа PaperPort, которая сканирует в один каталог по 3000-7000 изображений в формате *.tiff. Имя: гггг-мм-дд_(#)
Когда порог сканирования достигает отметки в 2000, то следующие сканируемые файлы *.tiff начинаются отображаться в программе медленнее (может программа такая, может компьютер слаб - не столь важно) -> влияет на это именно количество файлов в каталоге.

Вот и пришла идея, а что если состряпать BAT-ник, который будет таскать *.tif файлы в другой каталог (в который пользователь не заходит - соответственно список не формируется - соответственно компьютер не тормозит и т.п. и т.д.), но таким образом, чтобы все файлы имели порядковый номер: гггг-мм-дд_(порядковый_номер).

Вариант:
1. BAT-ник таскает файлы все в одну папку - но не перезаписывает их, а переименовывает, например:
гггг-мм-дд_(порядковый_номер)1;
гггг-мм-дд_(порядковый_номер)2;
гггг-мм-дд_(порядковый_номер)3
...
2. Оставляя:

гггг-мм-дд_

переименовывает порядковый номер в скобках.
Итог:
гггг-мм-дд_(1);
гггг-мм-дд_(2);
гггг-мм-дд_(3);
гггг-мм-дд_(4);
гггг-мм-дд_(5);
гггг-мм-дд_(6);
...
...
...

Отправлено: 15:04, 11-01-2018 | #5


Аватара для Elven

Ветеран


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

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


т.е. нужно просто брать файлы начиная с самого старого в одном каталоге и переместить фиксированное количество файлов (например 1000) в другой каталог. с нумерацией не совсем понятно: например в папке последний файл который был перенесен носит имя "гггг-мм-дд_(1000).tiff" следующие файлы должны продолжить нумерацию ("гггг-мм-дд_(1001).tiff","гггг-мм-дд_(1002).tiff" и т.д.) или как-то по другому?

Отправлено: 15:34, 11-01-2018 | #6

it3 it3 вне форума Автор темы

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


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

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


Цитата Elven:
т.е. нужно просто брать файлы начиная с самого старого в одном каталоге и переместить фиксированное количество файлов (например 1000) в другой каталог. с нумерацией не совсем понятно: например в папке последний файл который был перенесен носит имя "гггг-мм-дд_(1000).tiff" следующие файлы должны продолжить нумерацию ("гггг-мм-дд_(1001).tiff","гггг-мм-дд_(1002).tiff" и т.д.) или как-то по другому? »
Всё верно!

Отправлено: 15:45, 11-01-2018 | #7


Аватара для Elven

Ветеран


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

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


Примерно так. numb.txt - файл с номером последнего перенесенного файла
Код: Выделить весь код
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set ocat=C:\старая\папка\
set ncat=Н:\овая\папка\
for /f %%j in (numb.txt) do set numb=%%j
set /a N=0
for /F "delims=" %%i in ('dir /a:-d /o:d /t:c /b') do (
set /a N=!N!+1
if !N! leq 1000 (
set /a numb=!numb!+1
set oname=%%i
set nname=!oname:~0,12!!numb!!oname:~-6!
REM move /Y !ocat!!oname! !ncat!!nname!
echo !numb!>numb.txt
)
)

Отправлено: 17:47, 11-01-2018 | #8


Ветеран


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

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


it3,
я вот одного не пойму - зачем переименовывать файлы, продолжать нумерацию, вы же их просто перемещаете, раскидывайте по одной тысяче, например, как есть да и все:
(имею ввиду что для "01-18" конец в нумерации надеюсь бывает и вряд-ли это 1000 000, поэтому в конце дня батничек на запуск - к утру раскидает, а утром уже "01-19" и поехали заново)
Код: Выделить весь код
@echo off
set "d=NaklScan"
:: Число файлов для разбивки по папкам
set kf=1000

:l
set /a m+=1
setlocal enabledelayedexpansion 
 2>nul dir/a-d/b "%d%"|>nul find /v "" || goto :eof
 for /f "delims=" %%a in ('2^>nul dir /a-d/b "%d%"') do (
  if not exist "%d%%m%" md "%d%%m%"
  set /a n+=1& if !n! leq %kf% >nul move/y "%d%\%%a" "%d%%m%\%%a"
 )
endlocal
goto l
pause

Последний раз редактировалось alpap, 11-01-2018 в 19:22.


Отправлено: 19:16, 11-01-2018 | #9

it3 it3 вне форума Автор темы

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


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

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


Цитата megaloman:
То есть в том другом каталоге получим громадное число файлов? »
Да.
Цитата megaloman:
А, кстати, какой максимальный номер может быть достигнут? »
Всегда по разному.
Цитата megaloman:
Почему папка называется "NaklScan5" а не "NaklScan125", например: - номер в имени папки несет смысловую нагрузку? »
Нет смысла.
Цитата megaloman:
А если в исходном каталоге, например, 3333 файла, то там после перемещения 1000 файлов останется 2333 до следующего запуска батника? »
Нет. К 2333 будет постоянно прибавляться еще файлы.

Цитата alpap:
поэтому в конце дня батничек на запуск - к утру раскидает, а утром уже "01-19" и поехали заново »
Нужно чтобы это выполнялось не утром, не в конце дня, а на протяжении дня - т.е. пока документы сканируются.
Я ведь написал.
Цитата it3:
Когда порог сканирования достигает отметки в 2000, то следующие сканируемые файлы *.tiff начинаются отображаться в программе медленнее (может программа такая, может компьютер слаб - не столь важно) -> влияет на это именно количество файлов в каталоге. »

Отправлено: 06:36, 12-01-2018 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Переименование/перемещение файла через drag&drop. VoyS Скриптовые языки администрирования Windows 3 17-06-2016 21:45
CMD/BAT - Архивирование, переименование и перемещение файлов с помощью BAT-файла kirillius Скриптовые языки администрирования Windows 7 13-05-2016 12:57
CMD/BAT - переименование группы файлов с запросом начального номера и перемещение kozikozi Скриптовые языки администрирования Windows 19 29-07-2014 19:31
CMD/BAT - [решено] Скрипт перемещение+переименование файла Pyrocar Скриптовые языки администрирования Windows 2 30-08-2010 14:25




 
Переход