找回密码
 加入
搜索
楼主: dearmb

[AU3基础] 关于取回DOS回显的问题?

 火.. [复制链接]
 楼主| 发表于 2011-3-22 14:39:28 | 显示全部楼层
本帖最后由 dearmb 于 2011-3-24 11:26 编辑
我的意思是xcopy本身有返回值来判断copy是否pass, 不需要那么复杂.
gapkiller 发表于 2011-3-22 14:11



    谢谢,以前还真不知道
但是现在的问题是,怎么能把pass还是fail纪录下来,上千台机器一起在拷贝,一直盯着看实在不是什么好办法。
而且现在拷贝的是大数量的小文件,时间很长,我准备用检测xcopy进程数量的办法限制10个进程一起执行,只有纪录下来成功还是失败才行……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-3-22 14:47:41 | 显示全部楼层
如果路径没特殊需求,为什么不考虑WINRAR打包的方式?可打成自解压包,在下面的机子再自行解压即可。
 楼主| 发表于 2011-3-22 15:35:24 | 显示全部楼层
如果路径没特殊需求,为什么不考虑WINRAR打包的方式?可打成自解压包,在下面的机子再自行解压即可。
friendtasy 发表于 2011-3-22 14:47



    肯定不能这样
发表于 2011-3-22 17:12:38 | 显示全部楼层
#include <Constants.au3>

Local $foo = Run(@ComSpec & " /c xcopy /e /i /y D:\SOHO\line4\*.* \\192.168.183.59\d$\EntrySystems\Line4", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "信息输出:", $line)
Wend

While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "错误输出:", $line)
Wend
 楼主| 发表于 2011-3-22 17:18:08 | 显示全部楼层
netegg 发表于 2011-3-22 17:12


谢谢,但提示信息输出窗口,是空白的
我觉得xcopy自己判断成功失败似乎好些,现在试那个呢
发表于 2011-3-22 22:20:06 | 显示全部楼层
DOS下也可以实现 刚才的 1 - 255 的意思的 不用那么写
你可以先把xcopy的IP用 echo写入文本 接着执行 copy命令
这样就可以了
需要我上代码吗
 楼主| 发表于 2011-3-23 09:49:51 | 显示全部楼层
DOS下也可以实现 刚才的 1 - 255 的意思的 不用那么写
你可以先把xcopy的IP用 echo写入文本 接着执行 copy ...
love5173 发表于 2011-3-22 22:20



    谢谢,先不用了,我觉得xcopy自己判断成功失败似乎好些,现在试那个呢
如果但的echo出来IP和拷贝了多少,我还得写语句根据回显的内容判断拷贝是否成功
不如xcopy自己判断成功失败告诉我呢
 楼主| 发表于 2011-3-23 09:53:16 | 显示全部楼层
gapkiller 发表于 2011-3-22 11:49



问个问题,刚才查了一下xcopy的退出码
退出码 说明
  0 文件复制没有错误。
  1 没有找到要复制的文件。
  2 用户按 CTRL+C 终止了 xcopy。
  4 出现了初始化错误。没有足够的内存或磁盘空间,或命令行上输入了无效的驱动器名称或语法。
  5 出现了磁盘写入错误。

你给我的那个批处理是不是应该改成
if errorlevel 0 goto pass
更保险些?批处理不太懂,请教
发表于 2011-3-23 10:02:36 | 显示全部楼层
本帖最后由 love5173 于 2011-3-23 10:06 编辑

回复 23# dearmb
:后面的是跳转位置
他写的是单台xcopy的,意思是说
如果返回码不是1 跳转:pass 在屏幕上输出 pass 再跳转批处理结尾
如果返回码是是1 跳到:fail的位置 输出 fail
你可以判断如果等于0 什么都不输出
不等于0的时候 函数暂停 同时输出 fail
他写的那个没问题的,唯一的不足就是没给你加上变量 用循环实现xcopy254台机器
发表于 2011-3-23 10:26:22 | 显示全部楼层
问个问题,刚才查了一下xcopy的退出码
退出码 说明
  0 文件复制没有错误。
  1 没有找到要复 ...
dearmb 发表于 2011-3-23 09:53



    看来你对批处理完全不懂. 按我写的就对了.
 楼主| 发表于 2011-3-23 10:54:14 | 显示全部楼层
回复  dearmb
:后面的是跳转位置
他写的是单台xcopy的,意思是说
如果返回码不是1 跳转:pass 在屏幕上 ...
love5173 发表于 2011-3-23 10:02



    3Q,那我就不研究了,他那个正好给我用,因为机器太多,我想检测xcopy进程数量,10个进程就不运行了,等到小于10个就继续运行,他这个单太的正好
 楼主| 发表于 2011-3-23 10:54:25 | 显示全部楼层
看来你对批处理完全不懂. 按我写的就对了.
gapkiller 发表于 2011-3-23 10:26



    3Q,那我就不研究了
 楼主| 发表于 2011-3-23 11:59:36 | 显示全部楼层
看来你对批处理完全不懂. 按我写的就对了.
gapkiller 发表于 2011-3-23 10:26



    问个问题,我现在是这样写的
@echo off
xcopy /e /i /y E:\Scripthost\*.* \\192.168.131.61\E$\Scripthost
if errorlevel 1 goto fail
:pass
echo [DestDir]  \\192.168.131.61\E$\Scripthost [Result] : *Successful* >>Z:\CopyTool\131\log\131.61.log
del %0
goto end
:fail
echo [DestDir]  \\192.168.131.61\E$\Scripthost [Result] : *Failure* >>Z:\CopyTool\131\log\131.61.log
del %0
:end


在end后面加上了del %0,我想运行之后删除自己
我用Run(@ComSpec & " /c " & @ScriptDir&"\CopyTool\131\bat\131."&$i&".bat",@SystemDir,@SW_SHOW)运行,运行之后没有删除
没有变量直接运行Run(@ComSpec & " /c Z:\CopyTool\131\bat\131.61.bat",@SystemDir,@SW_SHOW),运行之后就删除了
不知道为什么
发表于 2011-3-23 20:28:11 | 显示全部楼层
本帖最后由 love5173 于 2011-3-23 20:33 编辑

回复 28# dearmb
话说你的语法有问题,变量的表达有问题,能看你完整的代码吗
Run(@ComSpec & " /c " & @ScriptDir&'\CopyTool\131\bat\131.'&$i&'.bat',@SystemDir,@SW_SHOW)
发表于 2011-3-23 20:51:10 | 显示全部楼层
写入文本,然后提取相关数据
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 11:50 , Processed in 0.067331 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表