Имя пользователя:
Пароль:
 | Правила  

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

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

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


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

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


Вложения
Тип файла: rar batk.rar
(412 байт, 6 просмотров)
Доброго времени суток. Требовалось создать *.bat файл, который осуществит копирование файла по всем компьютерам IP адреса которых есть в списке, вот какой код получился:
Код
Код: Выделить весь код
@Set Spisok=1.txt
@Set File=list.txt
@Set Shara=d$
@Set Log=D:\Spisoklog.txt
 
@Echo +++ >> "%Log%"
@Echo +++ %Date% %Time% ++++++++++++++++++++++++ >>"%Log%"
@Echo +++ >> "%Log%"
 
FOR /F "usebackq delims=" %%i IN ("%Spisok%") DO Call :CopyTo %%i
GoTo :Eof
 
:CopyTo
ping -n 1 %1 >nul
 
@if not %Errorlevel%==0 (
  @ Echo --- Узел %1 не пингуется >> "%Log%"
   @GoTo :Eof
)
 
Copy "%File%" "\\%1\%Shara%" >nul 1>nul 2>nul
 
if %Errorlevel%==0 echo +++ Успешно    Copy "%File%" "\\%1\%Shara%" >> "%Log%"
if not %Errorlevel%==0 echo --- Не удалось Copy "%File%" "\\%1\%Shara%" >> "%Log%"

Список IP адресов хранится в файле 1.txt, файл который надо отправить list.txt, на каждом компьютере в сети расшарен диск D, ну и лог Spisoklog.txt...
Проблема в том, что не могу уже второй день найти ошибку, копирование не происходит и в лог-файл записывается отчёт, что копирования не произошло. Надеюсь свежий глаз заметит ошибку.

Отправлено: 19:54, 22-05-2013

 

Ветеран


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

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


Цитата word_up@vk:
Copy "%File%" "\\%1\%Shara%" >nul 1>nul 2>nul »
word_up@vk, зачем Вам столько "нулей"? Они, конечно, ошибку не вызывают, но системой в данном случае интерпретируется только >nul или 1>nul. Лучше перенаправьте выход в лог
Код: Выделить весь код
Copy "%File%" "\\%1\%Shara%" >>%Log%
и выложите результат.

А другими BAT-файлами всё нормально копировалось по сети?

Последний раз редактировалось Georgio, 22-05-2013 в 22:09.


Отправлено: 21:40, 22-05-2013 | #2



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

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


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


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

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


Заменил строку, в Log файле выдало 0. и копирование всё равно не произошло

Отправлено: 22:04, 22-05-2013 | #3


Ветеран


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

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


Цитата word_up@vk:
ping -n 1 %1 >nul »
Если 192.168.*.*, то errorlevel всегда будет 0.
Код: Выделить весь код
ping -n 1 %1 | 1>nul findstr "TTL" || echo %1 не пингуется && goto:eof

Отправлено: 22:25, 22-05-2013 | #4


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


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

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


Цитата Georgio:
А другими BAT-файлами всё нормально копировалось по сети? »
а другими и не пробовал...

Отправлено: 22:35, 22-05-2013 | #5


Ветеран


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

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


Не проверялось:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set Spisok=1.txt
set File=list.txt
set Shara=d$
set Log=D:\Spisoklog.txt

>> "%Log%" (
	echo +++
	echo +++ %Date% %Time% ++++++++++++++++++++++++
	echo +++
)

if exist "%Spisok%" (
	if exist "%File%" (
		for /f "usebackq delims=" %%i in ("%Spisok%") do call :CopyTo "%%~i"
	) else (
		echo Can't find [%File%].
	)
) else (
	echo Can't find [%Spisok%].
)

endlocal
exit /b 0

:CopyTo
	ping.exe -n 1 %~1 | >nul find.exe /i "TTL=" && (
		1>nul 2>"%Log%" copy "%File%" "\\%1\%Shara%" && (
			echo +++ Успешно
		) || (
			echo --- Не удалось Copy "%File%" "\\%1\%Shara%"
		)
	) || echo --- Узел %~1 не пингуется >> "%Log%"
	
	exit /b 0


Цитата Georgio:
но системой в данном случае интерпретируется только >nul или 1>nul. »
А «2>nul »?


Цитата Foreigner:
Если 192.168.*.*, то errorlevel всегда будет 0. »
Почему?
Цитата:
Код: Выделить весь код
E:\Песочница\0258>ping.exe 192.168.223.1 && echo 1 || echo 2

Обмен пакетами с 192.168.223.1 по 32 байт:

Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.

Статистика Ping для 192.168.223.1:
    Пакетов: отправлено = 4, получено = 0, потеряно = 4 (100% потерь),
2

Последний раз редактировалось Iska, 22-05-2013 в 22:57.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:49, 22-05-2013 | #6


Ветеран


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

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


Цитата Iska:
Почему? »
192.168.0.*
Почему не знаю
Код: Выделить весь код
  > ping -n 1 192.168.0.1 && echo 1 || echo 2                   
                                                                
Обмен пакетами с 192.168.0.1 по с 32 байтами данных:            
Ответ от 192.168.0.1: число байт=32 время=1мс TTL=64            
                                                                
Статистика Ping для 192.168.0.1:                                
    Пакетов: отправлено = 1, получено = 1, потеряно = 0         
    (0% потерь)                                                 
Приблизительное время приема-передачи в мс:                     
    Минимальное = 1мсек, Максимальное = 1 мсек, Среднее = 1 мсек
1                                                               
                                                                
  > ping -n 1 192.168.0.2 && echo 1 || echo 2                   
                                                                
Обмен пакетами с 192.168.0.2 по с 32 байтами данных:            
Ответ от 192.168.0.103: Заданный узел недоступен.               
                                                                
Статистика Ping для 192.168.0.2:                                
    Пакетов: отправлено = 1, получено = 1, потеряно = 0         
    (0% потерь)                                                 
1

Отправлено: 23:14, 22-05-2013 | #7


Ветеран


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

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


Foreigner, это, случайно, не роутер Вам отвечает?

Отправлено: 00:08, 23-05-2013 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Копирование файла с заменой Meloslavsky Скриптовые языки администрирования Windows 3 31-01-2013 11:39
Копирование файла в 2 источника. vxor Хочу все знать 6 28-09-2012 14:32
CMD/BAT - [решено] копирование файла Freaxxx Скриптовые языки администрирования Windows 3 25-06-2012 20:29
VBS/WSH/JS - [решено] Копирование файла с маской... Dt83 Скриптовые языки администрирования Windows 8 06-09-2011 08:22
Двойное копирование файла с FTP. :( BlackMonk Хочу все знать 3 13-02-2005 09:08




 
Переход