dearmb 发表于 2011-3-22 14:39:28

本帖最后由 dearmb 于 2011-3-24 11:26 编辑

我的意思是xcopy本身有返回值来判断copy是否pass, 不需要那么复杂.
gapkiller 发表于 2011-3-22 14:11 http://autoitx.com/images/common/back.gif


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

friendtasy 发表于 2011-3-22 14:47:41

如果路径没特殊需求,为什么不考虑WINRAR打包的方式?可打成自解压包,在下面的机子再自行解压即可。

dearmb 发表于 2011-3-22 15:35:24

如果路径没特殊需求,为什么不考虑WINRAR打包的方式?可打成自解压包,在下面的机子再自行解压即可。
friendtasy 发表于 2011-3-22 14:47 http://autoitx.com/images/common/back.gif


    肯定不能这样

netegg 发表于 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

dearmb 发表于 2011-3-22 17:18:08


netegg 发表于 2011-3-22 17:12 http://autoitx.com/images/common/back.gif

谢谢,但提示信息输出窗口,是空白的
我觉得xcopy自己判断成功失败似乎好些,现在试那个呢

love5173 发表于 2011-3-22 22:20:06

DOS下也可以实现 刚才的 1 - 255 的意思的 不用那么写
你可以先把xcopy的IP用 echo写入文本 接着执行 copy命令
这样就可以了
需要我上代码吗

dearmb 发表于 2011-3-23 09:49:51

DOS下也可以实现 刚才的 1 - 255 的意思的 不用那么写
你可以先把xcopy的IP用 echo写入文本 接着执行 copy ...
love5173 发表于 2011-3-22 22:20 http://autoitx.com/images/common/back.gif


    谢谢,先不用了,我觉得xcopy自己判断成功失败似乎好些,现在试那个呢
如果但的echo出来IP和拷贝了多少,我还得写语句根据回显的内容判断拷贝是否成功
不如xcopy自己判断成功失败告诉我呢

dearmb 发表于 2011-3-23 09:53:16


gapkiller 发表于 2011-3-22 11:49 http://autoitx.com/images/common/back.gif


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

你给我的那个批处理是不是应该改成
if errorlevel 0 goto pass
更保险些?批处理不太懂,请教

love5173 发表于 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台机器

gapkiller 发表于 2011-3-23 10:26:22

问个问题,刚才查了一下xcopy的退出码
退出码 说明
  0 文件复制没有错误。
  1 没有找到要复 ...
dearmb 发表于 2011-3-23 09:53 http://www.autoitx.com/images/common/back.gif


    看来你对批处理完全不懂. 按我写的就对了.

dearmb 发表于 2011-3-23 10:54:14

回复dearmb
:后面的是跳转位置
他写的是单台xcopy的,意思是说
如果返回码不是1 跳转:pass 在屏幕上 ...
love5173 发表于 2011-3-23 10:02 http://autoitx.com/images/common/back.gif


    3Q,那我就不研究了,他那个正好给我用,因为机器太多,我想检测xcopy进程数量,10个进程就不运行了,等到小于10个就继续运行,他这个单太的正好

dearmb 发表于 2011-3-23 10:54:25

看来你对批处理完全不懂. 按我写的就对了.
gapkiller 发表于 2011-3-23 10:26 http://autoitx.com/images/common/back.gif


    3Q,那我就不研究了

dearmb 发表于 2011-3-23 11:59:36

看来你对批处理完全不懂. 按我写的就对了.
gapkiller 发表于 2011-3-23 10:26 http://autoitx.com/images/common/back.gif


    问个问题,我现在是这样写的
@echo off
xcopy /e /i /y E:\Scripthost\*.* \\192.168.131.61\E$\Scripthost
if errorlevel 1 goto fail
:pass
echo \\192.168.131.61\E$\Scripthost : *Successful* >>Z:\CopyTool\131\log\131.61.log
del %0
goto end
:fail
echo \\192.168.131.61\E$\Scripthost : *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),运行之后就删除了
不知道为什么

love5173 发表于 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)

xlcwxl 发表于 2011-3-23 20:51:10

写入文本,然后提取相关数据
页: 1 [2] 3
查看完整版本: 关于取回DOS回显的问题?