标题: [文件操作] [已处理]批处理搜索列表中某文件时如何判断机器是否存活? [打印本页]
作者: 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
---------------------------- for /f "tokens=1" %%a in (list.txt) do (
- dir \\%%a\c$\windows\vb.ini >>file.txt
- if exist \\%%a\g$ (
- dir \\%%a\g$\vb.ini >>file.txt
- ))
复制代码
目前以上批处理可以执行 可以把找到的vb.ini文件输入到file.txt里, 但是我想在list.txt中 如果有不存在的机器 那么也得等执行完批处理才能再循环
如何取出IP后先判断机器是否存活再进行查找文件?
作者: CUer 时间: 2011-7-11 21:40
你不是会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$\vb.ini >>file.txt
- )
- )
复制代码
作者: 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
- @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 \\%%a\c$\windows\vb.ini >>file.txt
- )
- if exist \\%%a\g$ (
- dir \\%%a\g$\vb.ini >>file.txt
- )
- )
- )
复制代码
作者: 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
- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1" %%a in (list.txt) do (
- ping -n 1 %%a | findstr "bytes="
- if !errorlevel! equ 0 (
- if exist \\%%a\c$ (
- dir \\%%a\c$\windows\vb.ini >>file.txt
- )
- if exist \\%%a\g$ (
- dir \\%%a\g$\vb.ini >>file.txt
- )
- )
- )
复制代码
作者: ArdentMan 时间: 2011-7-12 00:30
这样如何:- @Echo Off
- Arp /d
- For /F %%i In (list.txt) Do Start /min Ping /n 1 /w 100 %%i>Nul
- Ping /n 5 127.1>Nul
- (For /F %%i In ('Arp /a^|Findstr "dynamic"') Do (
- Dir \\%%i\c$\windows\vb.ini
- If Exist \\%%i\g$ Dir \\%%i\g$\vb.ini
- ))>file.txt
复制代码
作者: missll 时间: 2011-7-22 03:17
感谢以上两位给予无私的帮助~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |