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

Компьютерный форум 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

 

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

fascinating rhythm


Moderator


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

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


Домен есть?
Если есть, то, может, соответствие имени и логина брать оттуда?

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


Отправлено: 20:04, 22-01-2020 | #2



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

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


Ветеран


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

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


evgenyat, примеры реальных файлов:
Цитата evgenyat:
C:\docs\Вася Пупкин.pdf, C:\docs\Лена Головач.pdf … текстовый файл со строками Пупкин=pupkin и Головач=danaro »
упакуйте в архив и приложите к сообщению (либо выложите на вменяемый обменник/облако).
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:40, 22-01-2020 | #3


Ветеран


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

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


evgenyat,
пока без серверов, просто в папку и на примере приведенных файлов:
Код: Выделить весь код
@echo off
set "d1=C:\docs"
set "d2=C:\homes"
set "f=C:\текстовый файл.txt"

for /f "usebackq delims=" %%a in ("%f%") do set "%%a"
pushd "%d1%"
 for /f "tokens=1*" %%a in ('dir /a-d/b "*.pdf"') do call :# "%%a %%b" "%d2%\%%%%~nb%%"
popd
pause& exit

:#
 if exist "%~2" >nul copy "%~1" "%~2"
exit /b
Ах да, это очень важно. У меня и текстовый файл с данными и код в кодировке 866, именно так будет правильно распознана кириллица и там и там.

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


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


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

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


Вложения
Тип файла: zip Script.zip
(295.9 Kb, 3 просмотров)

Всем спасибо за старания. Домена нет. Прикрепляю файлы для примера. alpap, сейчас попробую твой вариант.

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


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


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

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


alpap, не получается с твоим вариантом. Скрипт берет все файлы из исходной папки, независимо от списка и копирует их в homes, а не в папку пользователя внутри homes. Может быть с моими файлами получится подогнать скрипт? Возможно есть другие способы, как можно эту задачу решить легче?

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


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

fascinating rhythm


Moderator


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

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


Powershell:
Код: Выделить весь код
$names = Import-Csv "D:\temp\evgenyat\Names.txt" -Delimiter '=' -Header Name,Login -Encoding Default
$files = gci "D:\temp\evgenyat\Source"

foreach ($name in $names) {
$userfiles = ($files |? name -match "\W$($name.name)\W").fullname
$destination = "D:\temp\evgenyat\Server\homes\$($name.login)"
if (!(Test-Path "$destination")) {mkdir "$destination"}
    if ($userfiles) {
    $userfiles |copy -Destination "$destination"
    }
}

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


Последний раз редактировалось DJ Mogarych, 23-01-2020 в 16:14. Причина: была ошибка


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


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


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

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


DJ Mogarych, у меня вот такая ошибка

Цитата:
Copy-Item : Не удается привязать аргумент к параметру "LiteralPath", так как он представляет собой пустую строку.
C:\Users\admin\Desktop\lohn\Files\script.ps1:5 знак:72
+ ... e -match "$($name.name)").fullname |% {copy -LiteralPath "$_" -Destin ...
+ ~~~~
+ CategoryInfo : InvalidData: ( [Copy-Item], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.CopyItemCommand
72 знак это первая кавычка "$_"

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


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

fascinating rhythm


Moderator


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

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


Поправил, пробуйте. Проверьте все пути ещё раз.
А бывает такое, что для какого-то пользователя нет файлов? добавил проверку

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


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


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


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

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


DJ Mogarych, да, бывает, и наоборот. Пробую.

DJ Mogarych, сработало на файлах для примера, буду дальше пробовать.

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование файла в папки по списку Bobis Скриптовые языки администрирования Windows 17 30-01-2025 21:04
CMD/BAT - [решено] Копирование файлов по списку из файла foma24 Скриптовые языки администрирования Windows 2 30-12-2022 15:35
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




 
Переход