 |
|
word_up@vk |
22-05-2013 19:54 2154207 |
Копирование файла в сеть
Вложений: 1
Доброго времени суток. Требовалось создать *.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...
Проблема в том, что не могу уже второй день найти ошибку, копирование не происходит и в лог-файл записывается отчёт, что копирования не произошло. Надеюсь свежий глаз заметит ошибку.
|
Цитата:
Цитата word_up@vk
Copy "%File%" "\\%1\%Shara%" >nul 1>nul 2>nul »
|
word_up@vk, зачем Вам столько "нулей"? Они, конечно, ошибку не вызывают, но системой в данном случае интерпретируется только >nul или 1>nul. Лучше перенаправьте выход в лог
Код:
Copy "%File%" "\\%1\%Shara%" >>%Log%
и выложите результат.
А другими BAT-файлами всё нормально копировалось по сети?
|
word_up@vk |
22-05-2013 22:04 2154283 |
Заменил строку, в Log файле выдало 0. и копирование всё равно не произошло
|
Если 192.168.*.*, то errorlevel всегда будет 0.
Код:
ping -n 1 %1 | 1>nul findstr "TTL" || echo %1 не пингуется && goto:eof
|
word_up@vk |
22-05-2013 22:35 2154304 |
Цитата:
Цитата Georgio
А другими BAT-файлами всё нормально копировалось по сети? »
|
а другими и не пробовал...
|
Не проверялось:
читать дальше »
Код:
@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
|
|
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
|
Foreigner, это, случайно, не роутер Вам отвечает?
|
Время: 22:44.
© OSzone.net 2001-