Я написал пакетный сценарий, который подключается к сетевым дискам и копирует файлы с использованием списка IP-адресов в текстовом документе - сценарий такой, как показано ниже.
TITLE Upgrading Contactless Price Limit
ECHO starting >> UpgradeLog.log
@ECHO on
rem CLS
echo Collect IP Address List
SET ListIP=C:\PMC\30To45Upgrade\tills.txt
echo Sets the folder we will use
SET PMC=C:\PMC\30To45Upgrade\VX820_cont45_Config\
ECHO Begin Mapping and Copying
ECHO.
echo Starts a FOR loop using the selected IP list
FOR /F %%a IN (%ListIP%) DO (
echo This will attempt to log into the C$ share of the target PC.
net use \\%%a\c$ /u:rbsgeneric BMr3ta1l >NUL >> UpgradeLog.log
ECHO.
ECHO Copying directory to: %%a... >> UpgradeLog.log
ECHO.
echo Uses the Robocopy command to send the folder to the specified Till
mkdir \\%%a\c$\retailjava\icc\VX820_cont45_Config
C:\robocopy.exe %PMC% \\%%a\c$\retailjava\icc\VX820_cont45_Config /e /r:0 /w:10 /v /z >> UpgradeLog.log
ECHO.
ECHO Disconnecting from %%a... >> UpgradeLog.log
ECHO.
echo Disconnected from the share.
net use \\%%a\c$ /DELETE>NUL >> UpgradeLog.log)
ECHO. >> UpgradeLog.log
pause
Однако, если IP-адрес отключен, требуется долго терпеть неудачу и переходить к следующему - я думаю, что лучшее решение, если сначала пропинговать IP-адрес и если он не отвечает, перейти к следующему
Итак, блок кода, подобный этому
FOR /F %%a IN (%ListIP%) DO (
ping %%a >> Failed.log
)
Однако этот блок будет писать, если он подключен или нет, и я просто хочу неудачные эхо-запросы - поэтому не уверен, как это сделать.
Также, если я введу это в свой код, как это - даже если он терпит неудачу, он переносится в robocopy, поэтому, насколько я могу судить, ему нужен какой-то оператор if / else, но я не уверен, как это реализовать. Любая помощь?
Попытка исправить
TITLE Upgrading Contactless Price Limit
ECHO starting >> UpgradeLog.log
@ECHO on
rem CLS
echo Collect IP Address List
SET ListIP=C:\PMC\30To45Upgrade\tills.txt
echo Sets the folder we will use
SET PMC=C:\PMC\30To45Upgrade\VX820_cont45_Config\
ECHO Begin Mapping and Copying
ECHO.
echo Starts a FOR loop using the selected IP list
FOR /F %%a IN (%ListIP%) DO (
ping %%a | find "TTL=" && (
echo This will attempt to log into the C$ share of the target PC.
net use \\%%a\c$ /u:rbsgeneric BMr3ta1l >NUL >> UpgradeLog.log
ECHO.
ECHO Copying directory to: %%a... >> UpgradeLog.log
ECHO.
echo Uses the Robocopy command to send the folder to the specified Till
mkdir \\%%a\c$\retailjava\icc\VX820_cont45_Config
C:\robocopy.exe %PMC% \\%%a\c$\retailjava\icc\VX820_cont45_Config /e /r:2 /w:10 /v /z >> UpgradeLog.log
ECHO.
ECHO Disconnecting from %%a... >> UpgradeLog.log
ECHO.
echo Disconnected from the share.
net use \\%%a\c$ /DELETE>NUL >> UpgradeLog.log
) || (
echo %%a Failed to connect >> failed.log
)
)
ECHO. >> UpgradeLog.log
pause