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

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

Roman_Ko 04-03-2016 13:46 2612807

Поиск файла по сети
 
Добрый день!
Задача следующая: Имеется несколько десятков компьютеров (около 50-ти). Нужен батник, который бы определил наличие файла text.txt на всех компьютерах и результатом выдал два файла с логами log1.txt и log2.txt, где log1.txt будет содержать в себе имена компьютеров, на которых файл text.txt был найден и соответственно log2.txt - имена компьютеров, где файл text.txt найден не был.
Известно, что файл text.txt при его наличии на компьютере лежит в каталоге C:\TEMP.
Начал писать батник:
Код:

@echo off
set listfile=computername.txt
rem computername.txt содержит имена компьютеров, например, pc-nb-01, pc-nb-02  и т.д.
for /f "tokens=1" %%i in (%listfile%) do dir /b "\\%%i\c$\TEMP"
rem Показывает содержимое папки c:\TEMP на каждой машине, где видно есть ли файл text.txt или нет.
pause

А теперь надо как то склеить это с функцией if и вывести в логи:
Код:

if /i exist %%i\text.txt (
      echo %%i >> c:\log1.txt
      ) esle (
      echo %%i >> c:\log2.txt
  )

Помогите решить. Спасибо.

Elven 04-03-2016 14:13 2612821

Код:

@echo off
set listfile=computername.txt
rem computername.txt содержит имена компьютеров, например, pc-nb-01, pc-nb-02  и т.д.
for /f "tokens=1" %%i in (%listfile%) do (
if /i exist "\\%%i\c$\TEMP\text.txt" (
      echo %%i >> c:\log1.txt
      ) else (
      echo %%i >> c:\log2.txt
  )
)

Такой вариант предполагает, что компьютер, к которому идет обращение, включен, в сети, и шара c$ доступна. По хорошему это все тоже бы проверять.

Roman_Ko 04-03-2016 14:43 2612832

Ого, спасибо большое. Не ожидал, что так быстро ответят:)
Проверил - все работает!
P.S. не esle, а else. Я неправильно вначале указал.
На всякий случай конечный вариант:
Код:

@echo off
set listfile=computername.txt
rem computername.txt содержит имена компьютеров, например, pc-nb-01, pc-nb-02  и т.д.
for /f "tokens=1" %%i in (%listfile%) do (
  if /i exist "\\%%i\c$\TEMP\text.txt" (
      echo %%i >> c:\log1.txt
      ) else (
      echo %%i >> c:\log2.txt
  )
)

Тему можно закрывать. Ещё раз спасибо за оперативность!

Elven 04-03-2016 14:45 2612836

Roman_Ko, опечаточка, пардон :). Если проблема решена, то в в теме есть специательная кнопочка "отметить тему решенной".


Время: 22:06.

Время: 22:06.
© OSzone.net 2001-