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

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

Ответить
Настройки темы
CMD/BAT - Копирование файлов по списку соответствия логинов/имен в домашние папки пользователей

Новый участник


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

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


Здравствуйте!

Есть папка с файлами, имеющими вид C:\docs\Вася Пупкин.pdf, C:\docs\Лена Головач.pdf , на сервере находятся домашние папки этих пользователей \\server\homes\pupkin и \\server\homes\danaro, так же есть текстовый файл со строками Пупкин=pupkin и Головач=danaro . Нужно файл Вася Пупкин.pdf (обязательно с пробелом) скопировать в папку pupkin, а файл Лена Головач.pdf в папку danaro. Соответственно файлов таких больше тысячи, вручную что-то делать не вариант.

Отправлено: 19:14, 22-01-2020

 

Новый участник


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

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


DJ Mogarych, не выходит. Возможно потому, что не для всех файлов Source есть папки? Может быть лучше файлы не копировать, а переносить, что бы было видно с какими файлами дело не пошло?

Отправлено: 13:33, 23-01-2020 | #11



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

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


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Цитата evgenyat:
Возможно потому, что не для всех файлов Source есть папки? »
Скрипт идёт по пользователям, перечисленным в списке. Если файлов, содержащих их имя, нет, то с ними ничего не происходит.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 13:40, 23-01-2020 | #12


Ветеран


Contributor


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

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


evgenyat, Для вашего примера
Код: Выделить весь код
@Echo Off
cls
	Set "Home=\\Server\Test1\Homes"
	Set "Docs=Z:\Box_In\Docs"
	Set "DocsExt=pdf"
	Set "Names=Z:\Box_In\Docs\names.txt"

	For /F "usebackq tokens=1,2 delims==" %%i In (`2^>nul more "%Names%"`) Do Call :MyCopy %%i %%j ||Echo --- File "%Names%" string %%i=%%j not correct
pause
Exit /B

:MyCopy
	If Exist "%Docs%\* %1,*.%DocsExt%" If Exist "%Home%\%2" >nul Copy "%Docs%\* %1,*.%DocsExt%" "%Home%\%2\" &Exit /B 0
	If Not Exist "%Docs%\* %1,*.%DocsExt%" Echo !!! File "%Docs%\* %1,*.%DocsExt%" not exist
	If Not Exist "%Home%\%2" Echo !!! Folder "%Home%\%2" not exist
Exit /B 2
При невозможности обработать строку из списка, выдаются информационные сообщения, по которым можно разобраться в причинах неуспеха

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 23-01-2020 в 13:49.


Отправлено: 13:42, 23-01-2020 | #13


Новый участник


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

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


DJ Mogarych, сам дурак, перепутал имя/логин у себя. Все сработало, спасибо! Только одна небольшая ошибка: к имени Vano попал как свой файл, так и файл Ivanova. Это можно сделать?

megaloman, спасибо, попробую так же и этот вариант.

megaloman, все сработало как надо. А если мне нужно эти файлы не скопировать, а перенести, то что нужно изменить?

Отправлено: 13:49, 23-01-2020 | #14


Ветеран


Contributor


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

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


Цитата evgenyat:
Только одна небольшая ошибка: к имени Vano попал как свой файл, так и файл Ivanova. Это можно сделать? »
Здесь надо уточнение: подозреваю, что по сравнению с решением DJ Mogarych я сделал несколько допущений, если они неверны - придётся переделывать.
1. "есть текстовый файл со строками" - я предположил, что там формат строк имябезпробела=папкабезпробела
2. Вид имён pdf-файлов: что-то впереди имябезпробела,что-то сзади.pdf. То есть я ищу в имени файла
не "имябезпробела"
а " имябезпробела," (с пробелом впереди и запятой после)
За счёт этого удалось избежать совпадения типа Vano=Ivanova в помянутом решении уважаемого DJ Mogarych
Цитата evgenyat:
А если мне нужно эти файлы не скопировать, а перенести, то что нужно изменить? »
Вместо Copy ..... написать Move /Y .....

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 23-01-2020 в 14:44.


Отправлено: 14:37, 23-01-2020 | #15


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Попробуйте, поправил вверху.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 14:46, 23-01-2020 | #16


Новый участник


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

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


Всем спасибо! Куда оплачивать?

DJ Mogarych,

Код: Выделить весь код
copy : Не удалось найти часть пути "C:\Users\admin\Desktop\homes\Andreas".
C:\Users\admin\Desktop\lohn\Files\script.ps1:7 знак:17
+ ... $userfiles |copy -Destination "C:\Users\admin\Desktop\homes\$($name.l ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : System.IO.DirectoryNotFoundException,Microsoft.PowerShell.Commands.CopyItemCommand

Отправлено: 14:51, 23-01-2020 | #17


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Добавил создание папок пользователя, если их нет на сервере.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:15, 23-01-2020 | #18



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование файлов по списку из файла foma24 Скриптовые языки администрирования Windows 2 30-12-2022 15:35
CMD/BAT - [решено] Копирование файла в папки по списку Bobis Скриптовые языки администрирования Windows 15 17-07-2019 17:24
CMD/BAT - Поиск полных ссылок и содержащих их файлов по списку имен (%%~nxa) ruslaw Скриптовые языки администрирования Windows 0 17-12-2017 14:09
CMD/BAT - [решено] Копирование файлов по списку foma24 Скриптовые языки администрирования Windows 5 22-01-2014 16:45
CMD/BAT - поиск и копирование файлов по списку-маске martyn_80 Скриптовые языки администрирования Windows 1 24-11-2012 14:47




 
Переход