Как написать Bat файл для перемещения файла в папку, если известно только часть имени папки и файла?
Добрый день!
Столкнулся с такой задачей.
В папке Out есть папки с файлами, которые называются примерно так:
123-файл Иванов
434-файл Сидоров
Содержимое этих папок необходимо перенести в другую папку, в которой есть каталоги, со схожими наименованиями:
123-файл_Иванов
434-файл Сиддд
То есть нужно сделать так, чтобы скрипт мог по части имени папки, копировать содержимое в другие папки, у которых часть имени идентична исходным папкам.
Что-то не очень понял.
Есть файлы:
123_файл_Сидоров.xls
111_файл_Иванов.xls
А так же есть например на диске D есть папки этих пользователей, вы хотите переместить файл Сидорова в папку Сидорова и так для каждого пользователя, верно?
Это у вас какая-то "нечеткая логика". Тут батник вам не поможет, нужен инструмент серьезней.
Но если бы вы как-то упростили задачу без этих заворотов, то можно было бы и на батниках реализовать.
Например: все файлы содержащие Сидоров складывать в одноименную папку находящуюся по такому-то пути, перечень фамилий (частей файлов) находится в конфигурационном файле. В конфигурационном файле можно не только список частей файлов положить, но и на каждую часть указать в какую папку складывать файлы.
Артем Кирьянов, возможно несколько сумбурно изложил.
есть папки:
123-файл Иванов
434-файл Сидоров
В них есть содержимое, которое нужно скопировать. Имена содержимого рандомные.
Нужно перенести содержимое в другие папки(на другом диске), у которых названия папок, совпадают только частично. Совпадают только номера папок(123-файл и 434-файл), а после номеров могут быть другие фамилии, или те же фамилии но с опечатками либо вообще только номера.
То есть суть в том, чтобы создать скрипт, в котором прописана маска названия файла(которая содержит номер папки), и который переносит содержимое из папки 123_файл Сидоров в папку 123_файл Сиддд
У исходной и конечной папки в имени совпадает только номер.
Короче, я тут пробовал написать батник, чуть не убился об стену, потом вспомнил что есть PowerShell и проще будет на нем.
Короче, опять же если я правильно понял задачу. Смотрите.
На диске D я создал папку 123-файл Сидоров, а внутри файлы всякие разные.
Потом я создал папку на диске C: 123_Сидддд, дальше написал такой скрипт:
Shoqer, Ну если ориентироваться именно на цифры, то становится уже проще - нечеткая логика пропадает :)
Цифры из имени папки можно получить с помощью конструктци for /f "tokens=1 delims=-" ...
Искать папку назначения можно обычным dir /s /b /ad ...
загнав его то же в for /f
Ну а дальше дело техники это скомпоновать вместе.
Для справки
for /?
dir /?
В любой родной команде батников есть встроенная справка, которую можно получить вызвав команду с параметром /?. Даже команду if можно вызвать с этим параметром.