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
写入文本,然后提取相关数据