Войти

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


neviDimka91
31-07-2019, 13:42
Доброго времени суток. Прошу помочь написать, на мой взгляд, сложный скрипт. Суть такая. Есть группа пользователей, они находятся в домене. У каждого из них, на компьютере, есть папка с файлами...если точно, то C:\WindowsSE и в ней пару документов, которые записываются туда каждый день. Скрипт должен делать следующее, когда пользователь выключает компьютер или скажем за 30 минут до конца рабочего дня, брал содержимое папки WindowsSE или саму папку и копировал все на сервер, но так как пользователей много, а значит на сервер будет копироваться много папок WindowsSE, что в итоге создаст одну папку и все файлы будут в перемешку, а надо что бы от каждого пользователя (желательно с его именем и фамилией или именем компьютера) создавалась папка и уже туда помещалась та самая папка WindowsSE с его данными, не "затираясь" или "заменяясь" такими же от других пользователей!, такое вообще возможно сделать?)))

Ageron
31-07-2019, 14:53
когда пользователь выключает компьютер »
поместить в logoff батник
с содержимым

set old_dir="D:\очень важная папка"
set new_dir="\\server\важные папки\%username%"
xcopy %old_dir% %new_dir% /s /e /h /y

neviDimka91
31-07-2019, 15:12
Где расположен скрипт: на сервере или у клиента? »
Если вы про скрипт, который хотелось бы написать, то я думаю он будет располагаться как написали вышел в LOGOFF.

set old_dir="D:\очень важная папка"
set new_dir="\\server\важные папки\%username%"
xcopy %old_dir% %new_dir% /s /e /h /y »
я попробую - позже отпишусь

UPD: попробовал скрипт. При выходе пользователя компьютер завис))))

Charg
31-07-2019, 19:04
При выходе пользователя компьютер завис)))) »
Не завис а начал копирование. Либо у пользователя нет прав на запись в папку %new_dir%

DJ Mogarych
31-07-2019, 22:02
neviDimka91, для этого 100 лет как придумали домашние папки:
https://support.microsoft.com/ru-ru/help/816313/how-to-assign-a-home-folder-to-a-user
Пользователи просто будут работать уже на сервере в своей папке.

И никаких скриптовых костылей. У вас же домен есть, это очень мощная штука.

neviDimka91
01-08-2019, 08:06
Не завис а начал копирование. Либо у пользователя нет прав на запись в папку %new_dir% »
в папочке было 3 файла (картина, документ ворд и эксель), доступ в папку есть (фул права). Пока не разобрался в чем дело, мб путь указан не верно, хотя перепроверил все 100 раз.

Пользователи просто будут работать уже на сервере в своей папке. »
Скажем так, этот вариант нам не подходит, данный скрипт и копирование файлов происходит в неведении пользователя. Все в целях информационной безопасности.

neviDimka91
01-08-2019, 08:54
set old_dir="D:\очень важная папка"
set new_dir="\\server\важные папки\%username%"
xcopy %old_dir% %new_dir% /s /e /h /y »
Кажется разобрался в чем дело. Дописал в конце кода pause и увидел как во время выполнения он спрашивает это каталог или файл. Поставил ключ /i и все заработало.

Ageron, вам огромное спасибо за помощь. Для меня даже такой код сложный, а для вас как я вижу проще простого)

megaloman
01-08-2019, 14:55
neviDimka91, Поставил ключ /i и все заработало. » Можно и без этого ключа, если пути указывать с "\"
Я бы еще предложил /D, чтобы не перезаписывать файлы, если они не изменялись, и неплохо бы иметь лог-файл, чтобы можно было контролировать исполнение этого процесса@Echo Off
Set "old_dir=Z:\очень важная папка"
Set "new_dir=\\Server\Test1\%username%"

2>nul Md "%new_dir%"
>>"%new_dir%\~%~nx0.log" (Echo. &Echo === %Date% %Time%)
>>"%new_dir%\~%~nx0.log" 2>>&1 Xcopy "%old_dir%\*.*" "%new_dir%\" /D /F /s /e /h /y

neviDimka91
01-08-2019, 15:06
Set "old_dir=Z:\очень важная папка"
Set "new_dir=\\Server\Test1\%username% »
хмм, а первые кавычки разве открывать нужно перед old а не когда путь указывается?
Set old_dir="Z:\очень важная папка"
Set new_dir="\\Server\Test1\%username%"

данный код попробую потестировать, но не сегодня

megaloman
01-08-2019, 15:11
neviDimka91, Все кавычки у меня расставлены правильно. @Echo Off
Set old_dir="Z:\очень важная папка\*.*"
Set new_dir="\\Server\Test1\%username%\"

2>nul Md "%new_dir%"
>>"%new_dir%\~%~nx0.log" (Echo. &Echo === %Date% %Time%)
>>"%new_dir%\~%~nx0.log" 2>>&1 Xcopy %old_dir% %new_dir% /D /F /s /e /h /y

Iska
01-08-2019, 15:17
хмм, а первые кавычки разве открывать нужно перед old а не когда путь указывается? »
neviDimka91, эти кавычки не в пути. Они для команды set.

P.S. Кавычки для пути и не должны указываться в set. Указывайте их непосредственно в коде, везде, где будут использоваться переменные окружения old_dir и new_dir (как это сделано в коде коллеги megaloman выше).

neviDimka91
29-08-2019, 13:12
Прошу прощения, за столь большой перерыв. Проверил код, как и обещал выше. Работает, только вот проблема, отображение русских букв в логах происходят в иероглифах.


=== 29.08.2019 13:08:29,01
C:\WindowsSE\Ќ®ў*п б¦*в*п ZIP-Ї*ЇЄ*.zip -> \WindowsSE\d.dima\Ќ®ў*п б¦*в*п ZIP-Ї*ЇЄ*.zip
C:\WindowsSE\Ќ®ўл© ⥪бв®ўл© ¤®Єг¬Ґ*в.txt -> \WindowsSE\d.dima\Ќ®ўл© ⥪бв®ўл© ¤®Єг¬Ґ*в.txt

Iska
29-08-2019, 13:51
neviDimka91, так и должно быть. Это не иероглифы, это обычная кодировка OEM/866, обычный Блокнот её не умеет. Используйте другое приложение, которое умеет в OEM/866.

neviDimka91
29-08-2019, 14:21
так и должно быть. Это не иероглифы, это обычная кодировка OEM/866 »
жестко туплю после отпуска)) Да, notepad++ читает спокойно. Еще раз всем спасибо




© OSzone.net 2001-2012