Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Копирование папки с файлами с помощью batника (http://forum.oszone.net/showthread.php?t=340162)

Stgean 19-04-2019 08:10 2868335

Копирование папки с файлами с помощью batника
 
Здравствуйте, необходимо скопировать папку с файлами из сетевого диска и положить их пользователю на диск С в конкретную папку.
На форуме помогли с скриптом, но он не работает и не понимаю почему.
Сам скрипт
Код:

@Echo Off
Set "From=\\192.168.0.21\1$\2"
Set "To=С:\3"
If Exist "%To%\" xcopy "%From%\" "%To%\" /D /s /e /h /y

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

И сразу второй вопрос. Как сделать чтобы скрипт отрабатывал на компьютере только один раз? Или как написать скрипт чтобы была проверка на наличие файла? Т.е. если в папке 3 у пользователя есть например файл 123.txt то копировать файлы из \\192.168.0.21\1$\2 не нужно.

alpap 19-04-2019 09:53 2868339

во-первых
почитайте справку xcopy /?, в частности про ключ /D. Вероятно у вас нет более свежих файлов и копировать попросту нечего или же вы и не обращаете внимания, так как копируется тот же файл с заменой старого, а изменения незначительны на первый взгляд.
во-вторых
Цитата:

Цитата Stgean
и положить их пользователю на диск С »

но у вас: Set "To=С:\3". При таком раскладе копирование будет в диск активного пользователя, т.е. на ваш диск С, а вам надо примерно по такому пути тогда копировать: "C:\Users\Имя пользователя\Папка"
Для
Цитата:

Цитата Stgean
чтобы была проверка на наличие файла? »

Также как у вас для папки
Код:

if not exist "C:\Users\Имя пользователя\Папка\123.txt" echo Копируем файлы
но тогда наличие ключа /D уже нецелесообразно или вы должны четко знать и понимать что хотите, тогда задачу можно решить правильно.

Stgean 19-04-2019 10:49 2868344

Цитата:

почитайте справку xcopy /?, в частности про ключ /D
По поводу этого я с вами согласен, просто сейчас у меня папка пустая, поэтому я и оставил этот ключ.
Цитата:

но у вас: Set "To=С:\3". При таком раскладе копирование будет в диск активного пользователя, т.е. на ваш диск С, а вам надо примерно по такому пути тогда копировать: "C:\Users\Имя пользователя\Папка"
По другому и не получится. Файлы которые я буду копировать с сетевого диска - это файлы программы, а она устанавливается только на Диск С и другого варианта просто нет. Поэтому чтобы у пользователей которых больше 200 человек вручную не менять файлы, хочу написать bat файл, который потом смогу раскидать через GPO.

Как вариант для этого предложили скрипт, который выше написал. Но, он даже на локальном компьютере не работает.

alpap 19-04-2019 11:00 2868346

Цитата:

Цитата Stgean
он даже на локальном компьютере не работает »

чтобы вам помочь вы должны дать какие-то данные
что дает
Код:

@Echo On
Set "From=\\192.168.0.21\1$\2"
Set "To=С:\3"
If Exist "%From%" echo "%From%"
pause

если выводит
что дает
Код:

@Echo On
Set "From=\\192.168.0.21\1$\2"
Set "To=С:\3"
If Exist "%To%" echo "%To%"
pause

если выводит
что дает
Код:

@Echo On
Set "From=\\192.168.0.21\1$\2"
Set "To=С:\3"
xcopy /i "%From%" "%To%\"
pause

Stgean,
нашел вашу проблему и она банальна, диск C, конкретно буква C у вас в коде написана кириллицей вместо латиницы
Код:

@echo off
set "from=\\192.168.0.21\1$"
set "to=C:\3"

pushd "%from%"
 xcopy /i "2" "%to%\"
popd
pause


Stgean 19-04-2019 11:19 2868349

В первом случае
строка:2 знак:3
+ If Exist "%From%\" echo "%From%\"
+ ~
Отсутствует "(" в операторе if после "If".

Во втором случае выдает ошибку
Не найден файл: %From%
Скопировано файлов: 0.

alpap 19-04-2019 11:29 2868353

Stgean, я уже нашел вашу ошибку, пробуйте последний код в моем посте

Цитата:

Цитата Stgean
Отсутствует "(" в операторе if после "If". »

это что и как вы запускали интересно - скриншот конкретно запуска
Код:

@Echo On
Set "From=\\192.168.0.21\1$\2"
Set "To=С:\3"
If Exist "%From%" echo "%From%"
pause

(если актуально).

Stgean 19-04-2019 12:00 2868361

Спасибо, решил уже проблему самостоятельно))

Цитата:

@echo off
Set From="\\192.168.0.21\1$\2"
Set To="C:\3"
Set VerFile="C:\3\21.txt"
If Not Exist %VerFile% If Exist %To% xcopy %From% %To% /s /e /c /h /r /y /q

Проблема в другом, теперь через GPO не отрабатывает почему то))))


Время: 09:01.

Время: 09:01.
© OSzone.net 2001-