Процесс не может получить доступ к файлу, потому что он используется другой программой - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь написать сценарий для проверки связи с диапазоном IP-адресов и возврата .txt отчета об активных IP-адресах для использования в качестве переменной для копирования обновленной папки на все активные терминалы.Я упал на первое препятствие при запуске сценария, но отображает сообщение об ошибке «процесс не может получить доступ к файлу, потому что он используется другой программой».Мой сценарий выглядит следующим образом.

 @echo off
 :start
 FOR /L %%a in (1,1,255) do @(
 echo pinging ip range: 172.26.8.%%a
 ping -n 1 -w 500 172.26.8.%%a | FIND /i "Reply">>PTEST.txt
 )
 )
 echo ***Scan complete.***
 pause
 end

Я попытался добавить 2 <& 1after PTEST.txt, но все еще тот же результат. </p>

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Мне кажется, проблема в том, что ваше имя для пакетных заданий "ping.bat", а вы звоните

 Ping -n 1 -w 500 172.26.8.%%A 2>Nul|Find /I "Reply"

так что ваш ping.bat называется calles вместо ping.exe.

Измените строку на

Ping.exe -n 1 -w 500 172.26.8.%%A 2>Nul|Find /I "Reply"
0 голосов
/ 15 мая 2018

Возможно, вам следует использовать перенаправление STDERR для IP-адресов, которые не существуют в этом диапазоне, но не должно быть никаких очевидных причин, по которым PTEST.txt должен использоваться из того, что вы опубликовали.

Вы делаетеоднако, похоже, что несбалансированные круглые скобки, поэтому, если то, что вы опубликовали, на самом деле является частью другого блока For / If, вы должны показать остальную часть сценария.

@Echo Off
(   For /L %%A In (1,1,255) Do (
        Echo Pinging IP address: 172.26.8.%%A
        Ping -n 1 -w 500 172.26.8.%%A 2>Nul|Find /I "Reply"
    )
)>"PTEST.txt"
Echo ***Scan complete.***
Pause
...