Board logo

标题: 指定机器进行指定操作的批处理 [打印本页]

作者: bbq123bbq     时间: 2007-3-20 14:04    标题: 指定机器进行指定操作的批处理

在网上看到这段批处理
:A
rem 获取本机机号,机号区分大小写。
for /f "tokens=1* delims=:" %%i in ('ipconfig /all^|find /i "Host Name"') do set name=%%j
for /f "tokens=1* delims=>" %%i in ('type 配置文件.ini^|find /i "配置文件路径"') do set PC=%%j
for /f "tokens=1* delims=>" %%i in ('type 配置文件.ini^|find /i "执行的操作"') do set DOSRUN=%%j
for /f "tokens=1* delims=>" %%i in ('type 配置文件.ini^|find /i "执行操作的目录"') do set PATH=%%j

rem 读取指定机器列表
for /f "usebackq tokens=1 delims=;" %%n in ("%PC%") do if %%n == %name% (goto RUN) else echo .


:END
exit

:RUN
rem 执行操作
cd /d %PATH%
%DOSRUN%
GOTO END

配置文件:
001;
002;
003;

-----------------------------------------
配置文件路径>"C:\Documents and Settings\csj\桌面\配置文件.ini"
-----------------------------------------
执行操作的目录>"D:\网络游戏\QQ"
-----------------------------------------
执行的操作>start qq.exe


有个问题请教,为是什么我把
:END
exit
放到
:RUN
rem 执行操作
cd /d %PATH%
%DOSRUN%
GOTO END
后面程序就失效,不管“配置文件”里有没有符合计算机名都运行QQ.exe

还有个问题经过修改批处理后当P运行到
:RUN
echo 找到指定主机程序开始运行请梢后............
ping/n 5 127.1
cd /d %PATH%
%DOSRUN%
GOTO end
显示 ping 不是有效外部或内部命令???
修改后批处理:
@echo off
rem 获取本机机号,机号区分大小写。
for /f "tokens=1* delims=:" %%i in ('ipconfig /all^|find /i "Host Name"') do set name=%%j
for /f "tokens=1* delims=>" %%i in ('type 配置文件.ini^|find /i "配置文件路径"') do set

PC=%%j
for /f "tokens=1* delims=>" %%i in ('type 配置文件.ini^|find /i "执行的操作"') do set

DOSRUN=%%j
for /f "tokens=1* delims=>" %%i in ('type 配置文件.ini^|find /i "执行操作的目录"') do set

PATH=%%j

rem 读取指定机器列表
for /f "usebackq tokens=1 delims=;" %%n in (%PC%) do if %%n == %name% (goto RUN)

for /f "usebackq tokens=1 delims=;" %%n in (%PC%) do if not %%n == %name% (goto no)


:RUN
echo 找到指定主机程序开始运行请梢后............
ping/n 5 127.1
cd /d %PATH%
%DOSRUN%
GOTO end

:no
echo 找不到指定主机......
pause>nul

:end
exit

最后问题能不能把
for /f "usebackq tokens=1 delims=;" %%n in (%PC%) do if %%n == %name% (goto RUN)

for /f "usebackq tokens=1 delims=;" %%n in (%PC%) do if not %%n == %name% (goto no)
合成一段或帮忙简化一下这段批处理??

[ Last edited by bbq123bbq on 2007-3-20 at 02:05 PM ]
作者: xycoordinate     时间: 2007-3-20 21:58
:END放在:RUN后面
rem 读取指定机器列表
for /f "usebackq tokens=1 delims=;" %%n in ("%PC%") do if %%n == %name% (goto RUN) else (echo . &goto END)


for /f "usebackq tokens=1 delims=;" %%n in (%PC%) do if %%n == %name% (goto RUN)
for /f "usebackq tokens=1 delims=;" %%n in (%PC%) do if not %%n == %name% (goto no)

简化
for /f "usebackq tokens=1 delims=;" %%n in (%PC%) do (
  if %%n == %name% (
    goto RUN
  ) else (
      goto no
    )
)

[ Last edited by xycoordinate on 2007-3-20 at 09:04 AM ]
作者: zhjipt     时间: 2007-6-17 02:54
说是支技网络,那个网络路径在哪设!怎么设能不能举例说明一下。