PDA

Показать полную графическую версию : [решено] Поиск файла по сети


Roman_Ko
04-03-2016, 13:46
Добрый день!
Задача следующая: Имеется несколько десятков компьютеров (около 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
@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
Ого, спасибо большое. Не ожидал, что так быстро ответят:)
Проверил - все работает!
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
Roman_Ko, опечаточка, пардон :). Если проблема решена, то в в теме есть специательная кнопочка "отметить тему решенной".




© OSzone.net 2001-2012