Board logo

标题: [文件操作] [已处理]批处理搜索列表中某文件时如何判断机器是否存活? [打印本页]

作者: missll    时间: 2011-7-11 19:28     标题: [已处理]批处理搜索列表中某文件时如何判断机器是否存活?

本帖最后由 missll 于 2011-7-22 03:18 编辑

---------list.txt----------
10.0.0.1
10.0.0.2
10.0.0.3
---------------------------
  1. for /f "tokens=1" %%a in (list.txt) do (
  2. dir \\%%a\c$\windows\vb.ini >>file.txt
  3. if exist \\%%a\g$ (
  4. dir \\%%a\g$\vb.ini >>file.txt
  5. ))
复制代码
目前以上批处理可以执行 可以把找到的vb.ini文件输入到file.txt里, 但是我想在list.txt中 如果有不存在的机器 那么也得等执行完批处理才能再循环
如何取出IP后先判断机器是否存活再进行查找文件?
作者: CUer    时间: 2011-7-11 21:40

你不是会if exist吗?
  1. @echo off
  2. for /f "tokens=1" %%a in (list.txt) do (
  3.     if exist \\%%a\c$ (
  4.         dir \\%%a\c$\windows\vb.ini >>file.txt
  5.     )
  6.     if exist \\%%a\g$ (
  7.         dir \\%%a\g$\vb.ini >>file.txt
  8.     )
  9. )
复制代码

作者: missll    时间: 2011-7-11 21:49

if exist 的时间有点长 如果遇到list.txt表里不存在的机器 还是去判断c$ g$盘存在不存在
那么如果是判断的盘多了 例如 c$ d$ e$ f$ …… 那时间会更久了  所以我想如果PING不到的话 就直接就过掉执行后边的。

for /f "tokens=1" %%a in (list.txt) do (

在这一句后边加一个判断  if  %ERRORLEVEL% NEQ  0  ????
如果不等于0 那么就继续读下一条 但是我不知道该怎么写?



你不是会if exist吗?@echo off
for /f "tokens=1" %%a in (list.txt) do (
    if exist \\%%a\c$ (
        dir \\%%a\c$\windows\vb.ini >>file.txt
    )
    if exist \\%%a\g$ (
        dir \\%%a\g$\v ...
CUer 发表于 2011-7-11 21:40

作者: CUer    时间: 2011-7-11 21:57

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1" %%a in (list.txt) do (
  4.     ping -n 1 %%a | findstr "bytes="
  5.     if !errorlevel! equ 1 (
  6.         if exist \\%%a\c$ (
  7.             dir \\%%a\c$\windows\vb.ini >>file.txt
  8.         )
  9.         if exist \\%%a\g$ (
  10.             dir \\%%a\g$\vb.ini >>file.txt
  11.         )
  12.     )
  13. )
复制代码

作者: missll    时间: 2011-7-11 22:17

我测试了下这样 根本就不输出file.txt了  
ping -n 1 %%a | findstr "bytes="
这里的 | findstr "bytes=" 可以去掉的吧  因为PING不到的话 已经就是1了 所以找不找 bytes= 都没有关系.
我不知道这批处理是哪里有错误  没有输出file.txt   vb.ini 这个文件是存在的.    用上边的那个不加PING判断的是可以输出


@echo off
setlocal enabledelayedexpansion
for /f "tokens=1" %%a in (list.txt) do (
    ping -n 1 %%a | findstr "bytes="
    if !errorlevel! equ 1 (
        if exist \\%%a\c$ (
            dir \\ ...
CUer 发表于 2011-7-11 21:57

作者: CUer    时间: 2011-7-11 22:23

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1" %%a in (list.txt) do (
  4.     ping -n 1 %%a | findstr "bytes="
  5.     if !errorlevel! equ 0 (
  6.         if exist \\%%a\c$ (
  7.             dir \\%%a\c$\windows\vb.ini >>file.txt
  8.         )
  9.         if exist \\%%a\g$ (
  10.             dir \\%%a\g$\vb.ini >>file.txt
  11.         )
  12.     )
  13. )
复制代码

作者: ArdentMan    时间: 2011-7-12 00:30

这样如何:
  1. @Echo Off
  2. Arp /d
  3. For /F %%i In (list.txt) Do Start /min Ping /n 1 /w 100 %%i>Nul
  4. Ping /n 5 127.1>Nul
  5. (For /F %%i In ('Arp /a^|Findstr "dynamic"') Do (
  6.   Dir \\%%i\c$\windows\vb.ini
  7.   If Exist \\%%i\g$ Dir \\%%i\g$\vb.ini
  8. ))>file.txt
复制代码

作者: missll    时间: 2011-7-22 03:17

感谢以上两位给予无私的帮助~




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2