Board logo

标题: dos6.22机上做个拷XP机中指定文件的批处理 [打印本页]

作者: rgb82754670     时间: 2006-10-21 04:10    标题: dos6.22机上做个拷XP机中指定文件的批处理

菜鸟级问题,请高手帮忙为盼,谢谢

在MS-DOS6.22下使用MSCLIENT3.0,NETBUI协议与XP机联网成功。
映射XP机的D:\CC网络盘为F:

想在DOS机上做个CC.BAT,

DOS机上键入CC空格123回车,能把F:\123.WBF文件拷到DOS机当前位置,

如果XP机没开或网络断开则提示XP机没开或网络断开,并按任意建返回DOS;

如果XP机上没有123.WBF则提示网络上没有此文件,并按任意建返回DOS;

如果拷贝成功则显示成功并按任意建继续执行DD空格123.WBF(DD是一个EXE文件)
cc.bat
@echo off
rem 如何检测xp机
copy f:\%1.wbf
作者: lxmxn     时间: 2006-10-21 07:25

@echo off
rem 如何检测xp机...
dir F:\>nul && goto thing || (echo XP机没有开机或者网络断开了...&goto :eof)
if not exist F:\123.WBF (
echo 网络上没有此文件...& pause &goto :eof
)
:thing
copy F:\%1.Wbf %1_.wbf
:eof
  
  代码未测试,有问题请跟帖讨论...

作者: rgb82754670     时间: 2006-10-22 09:48
dir F:\>nul && goto thing || (echo XP机没有开机或者网络断开了...&goto :eof)
此句是说显示f:\的内容到nul,如果出错将执行下一行判断f:\1%.wbf,如果没出错继续执行:thing如出错显示XP机没有开机或者网络断开了...好像这理解不通??

不知道这里的()与下面的()是什么作用,因为是菜鸟级,请不吝赐教。


我记得以下对吗?

&&它在从前往后依次执行被它连接的几个命令时会自动判断是否有某个命令执行出错,一旦发现出错后将不继续执行后面剩下的命令。

||在执行多条命令时,当遇到一个执行正确的命令就退出此命令组合,不再继续执行下面的命令。

&的作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败。
作者: lxmxn     时间: 2006-10-22 10:00

  不知道这位兄弟测试这段代码了没有?如果有什么问题,可以继续发帖来讨论。欢迎大家一起来讨论。

作者: gxfc     时间: 2006-10-22 13:47
要执行命令 && 成功 || 不成功

在MS-DOS6.22下不能实现吧。

[ Last edited by gxfc on 2006-10-22 at 13:54 ]
作者: lxmxn     时间: 2006-10-22 13:57

  怎么不能实现?可以说明一下原因么?

作者: rgb82754670     时间: 2006-10-23 01:43    标题: 测试结果

注:红色文字是测试以后我加的
@echo off
rem 如何检测xp机...
dir F:\>nul && goto thing || (echo XP机没有开机或者网络断开了...&goto :eof)  rem dos6.22提示语法错误syntax error
if not exist F:\%1.WBF (
echo 网络上没有此文件...& pause &goto :eof
) rem 因为这)dos6.22提示bad command or file name
:thing
copy F:\%1.Wbf /y
:eof
把上面存为881.bat
dos6.22下测试结果:
1。881 zxy107zw回车;如果网络正常并且f:\zxy107zw.wbf文件有则显示
syntax error
几个乱码(因为没有中文系统)...&pause &goto :eof
bad command or file name
        1 file(s) copied

2。881 zxy107z回车;如果网络正常并且f:\zxy107z.wbf文件没有则显示
syntax error
bad command or file name
几个乱码(因为没有中文系统)...&pause &goto :eof
bad command or file name
file not found -f:\zxy107z.wbf
       0file(s) copied

3。881回车;如果网络正常则显示
syntax error
bad command or file name
几个乱码(因为没有中文系统)...&pause &goto :eof
bad command or file name
path not found
4.881 zxy107zw回车;如果网络断开则显示
syntax error
bad command or file name
几个乱码(因为没有中文系统)...&pause &goto :eof
bad command or file name
extended error 53
5.881回车;如果网络断开则显示
syntax error
bad command or file name
几个乱码(因为没有中文系统)...&pause &goto :eof
bad command or file name
path not found

[ Last edited by rgb82754670 on 2006-10-23 at 01:55 ]
作者: rgb82754670     时间: 2006-10-23 05:35
请高手帮我看看,错在哪?(dos6.22系统)
不管我881后的文件在不在都会执行ck81.bat为什么?
881.bat内容如下:
@echo off
if exist F:\%1.WBF goto _copy
else goto end
:_copy
copy F:\%1.Wbf /y
ck81.bat 1%.wbf
:end
echo not files

我的目的是如果f:\1%.wbf不在,则显示not files并且返回dos;
               如果f:\1%.wbf在,则copy f:\1%.wbf/y 并且执行ck81.bat 1%.wbf

[ Last edited by rgb82754670 on 2006-10-23 at 05:41 ]
作者: ptsxb     时间: 2006-10-23 05:41
呵呵都是高手呀
作者: lxmxn     时间: 2006-10-23 06:15

@echo off
if exist "%~f1" (
copy "%~f1" filename.%~x1
start "" ck81.bat
start "" "%~f1"
) else (
echo %1不存在
)
exit
  格式为881.bat zxy107zw.wbf,注意要带扩展名,复制之后的文件名为filename.wbf的形式,如果还有问题,再跟帖讨论。本人测试通过……

作者: rgb82754670     时间: 2006-10-23 07:56
首先感谢lxmxn大力帮助,
请问你是哪个系统下测试通过,
我要的是DOS6.22下的批处理。
作者: lxmxn     时间: 2006-10-23 08:00

Re:rgb82754670
  
  我的系统是:Windows XP sp2,cmd.exe命令提示符下测试通过。
  
  我想也应该可以用在DOS下吧……

作者: rgb82754670     时间: 2006-10-23 08:18
lxmxn兄,看过7楼了吗,这是我dos6.22下测试的结果,有些批处理命令不能用
作者: electronixtar     时间: 2006-10-23 08:55
DOS 6.22 不支持 || && () 等。所以现在批处理分两种,一个是 MS-DOS Batch一种是 NT Batch。lxmxn的批处理不错但是要知道,纯DOS的批处理比XP下的艰苦n倍…………往日不堪回首~~

至于楼主的批处理估计需要多次 if errorlevel 才能成功。

[ Last edited by electronixtar on 2006-10-23 at 08:59 ]
作者: rgb82754670     时间: 2006-10-23 10:18
electronixtar大虾,就伸手帮一下愚弟,怎么个多次 if errorlevel; 先谢了。
作者: lxmxn     时间: 2006-10-23 10:53

  不好意思,因为没有DOS 6.22的环境,所以不知道哪些命令可以用,哪些不可以用。我也没办法。

作者: rgb82754670     时间: 2006-10-26 10:49    标题: 不知道lxmxn兄能否就下面的几个命令帮我写个批处理

纯DOS自带的批处理命令:

@
CALL
CHOICE用法:CHOICE:[/C[:]按键表] [/N] [/S] [/T[:]选择值,秒数] [显示文本]
其中,/C表示可选则的按键,/N表示不要显示提示信息,/S表示大小写字符敏感方式,/T表示若在批定的时间内没有选则的话,自动执行/C中定义的某个选择值。显示文本是CHOICE命令执行时的提示信息。选择结果将用ERRORLEVEL值来表示。
ECHO :显示指定的信息。通常显示在屏幕上。
FOR :用法:FOR %变量名 IN (文件集) DO 命令 [命令参数]
GOTO :转到批文件内部的某个标号下执行。
IF :条件判断命令。用法1:IF [NOT] EXIST 文件名 命令 [命令参数]
                            用法2:IF [NOT] ERRORLEVEL 错误返回代号 命令 [命令参数]
                            用法3:IF [NOT] 字符串1==字符串2 命令 [命令参数]
PAUSE :暂停批文件的执行,并显示“按任意键继续”的字样。
REM :添加注解。用于增加文件可读性,将不被执行。也可以用::来代替。
SHIFT :在批文件中改变可替换参数的位置。
可替换参数是一种特殊的参数,只能用在批文件中。这些参数是由使用者在执行批处理命令时输入的。比如,我们执行DIR /S /W命令,其中DIR是命令名,/S和/W是它的执行参数。在批文件中,这些命令参数将被分别赋予到可替换参数中,如/S就成的%1,/W就可了%2,以至类推,而命令本身则被赋予%0中。批文件就是利用可替换参数对执行时输入的参数来进行操作的。比如现在有个批处理文件叫MYFILE.BAT,在命令行下执行MYFILE.BAT YES,于是%0的值就是MYFILE.BAT,%1的值就是“YES”,可以在此批文件中用IF等命令判断出%1等参数的值,然后根据这些值的不同执行不同的操作,如IF "%1"=="YES" GOTO YES。
SHIFT命令不带任何参数,执行结果是将%0的值换成原%1的值,而原%1的值变成的原%2的值,以此类推。注意它的不可逆转性。因为批处理文件执行时的运行参数可能很多,可能会超过10个,而可替换参数只能从%0到%9,若想取得%9以后的参数值,只能使用SHIFT命令。这时,整个参数列将向前推。
作者: lxmxn     时间: 2006-10-26 14:09

@echo off
dir f:\>nul 2>nul
if errorlevel 1 echo The Windows XP has not on OR the Network has disconnected.&pause&goto eof
if errerlevel 0 goto true

:true
if not exist F:\%1.wbf echo The Windows XP has not exist the file you want.&pause&goto eof
copy F:\%1.wbf .
echo One file(s) copied successfully.
pause
dd.exe %1.wbf

:eof
如果还是有问题,请继续跟帖讨论.


[ Last edited by lxmxn on 2006-10-26 at 02:10 PM ]
作者: rgb82754670     时间: 2006-10-27 11:01    标题: dos6.22下测试如下

1.SCREEN01.jpg
  这是f:\没有dwl10z.wbf文件的结果。
  接着按任意建进入dd.exe

2.SCREEN02.jpg
  这是f:\有dwc10zwb.wbf文件的结果。
  接着按任意建进入dd.exe


3.最后都进dd.exe

[ Last edited by rgb82754670 on 2006-10-27 at 11:13 AM ]
附件 1: SCREEN01.jpg (2006-10-27 11:03, 14.88 K, 下载附件所需积分 1点 ,下载次数: 3)


附件 2: SCREEN02.jpg (2006-10-27 11:12, 8.51 K, 下载附件所需积分 1点 ,下载次数: 2)



作者: lxmxn     时间: 2006-10-27 20:43

  兄弟,再试试这个,如果还不行,请继续跟帖讨论。=_=!!
@echo off
dir f:\
if errorlevel 1 goto fail
if errerlevel 0 goto true

:true
if not exist F:\%1.wbf goto yes
copy F:\%1.wbf .
echo One file(s) copied successfully.
pause
dd.exe %1.wbf

:fail
echo The Windows XP has not on OR the Network has disconnected.
pause
goto eof

:yes
echo The Windows XP has not exist the file you want.
pause
goto eof

:eof
  
    p.s:没有想到DOS 6.22竟然不支持"&"连接符.汗一个..

作者: 9527     时间: 2006-10-27 22:24
你八楼的代码改成以下试试,dos6.22 是不支持IF ELSE语句的,还有就是注意你的GOTO语句的转向问题,P处理是按顺序执行的
@echo off
if exist F:\%1.WBF goto _copy
goto kk
:_copy
copy F:\%1.Wbf /y
ck81.bat 1%.wbf
goto end
:kk
echo not files
:end

我的目的是如果f:\1%.wbf不在,则显示not files并且返回dos;
               如果f:\1%.wbf在,则copy f:\1%.wbf/y 并且执行ck81.bat 1%.wbf
作者: NaturalJ0     时间: 2006-10-27 23:32

@echo off
if %1#==# goto END
@ctty nul
command /f /c if not exist f:\nul echo not connected>state1.flg
command /f /c if not exist f:\%1.wbf echo file not exist>state2.flg
@ctty con
find "file not exist" state2.flg>nul
if errorlevel 1 GOTO COPY
find "not connected" state1.flg>nul
if errorlevel 1 GOTO NOFILE
type state1.flg
GOTO DEL

:NOFILE
type state2.flg
GOTO DEL

:COPY
copy f:\%1.wbf

:DEL
del state1.flg
del state2.flg

:END
if exist %1.wbf dd %1.wbf
不知道能不能帮上忙。试试?

[ Last edited by NaturalJ0 on 2006-10-27 at 11:50 PM ]
作者: rgb82754670     时间: 2006-10-28 03:54    标题: 感谢21楼,你的方法可以



  Quote:
Originally posted by 9527 at 2006-10-27 22:24:
你八楼的代码改成以下试试,dos6.22 是不支持IF ELSE语句的,还有就是注意你的GOTO语句的转向问题,P处理是按顺序执行的
@echo off
if exist F:\%1.WBF goto _c ...

感谢21楼,你的方法可以
作者: rgb82754670     时间: 2006-10-28 03:57


  Quote:
Originally posted by lxmxn at 2006-10-27 20:43:

  兄弟,再试试这个,如果还不行,请继续跟帖讨论。=_=!!
[code]
@echo off
dir f:\
if errorlevel 1 goto fail
if errerlevel 0 goto true

:true
if n ...

20楼的仁兄,dir f:\ 我有上万个文件,光显示都要很长时间,这不行。
但还是十分感谢
作者: rgb82754670     时间: 2006-10-28 04:13


  Quote:
Originally posted by NaturalJ0 at 2006-10-27 23:32:
[code]
@echo off
if %1#==# goto END
@ctty nul
command /f /c if not exist f:\nul echo not connected>state1.flg
command /f /c if not exist f:\%1.wbf echo file not exist>state2.flg
@ctty c ...

22楼的兄弟,你的我测试后结果:

如果881后没跟文件回车,显示空白一行
如果881 dwc07zwb.wbf(f:\存在这个文件)则ok
如果881 dwc07zw.wbf(f:\不存在这个文件)则显示not connected(但我网络是连接的

另外我不知道command/f是什么意思

[ Last edited by rgb82754670 on 2006-10-28 at 04:19 AM ]
附件 1: SCREEN03.jpg (2006-10-28 04:17, 15.45 K, 下载附件所需积分 1点 ,下载次数: 2)



作者: lxmxn     时间: 2006-10-28 04:49


  Quote:
Originally posted by rgb82754670 at 2006-10-28 03:57:
20楼的仁兄,dir f:\ 我有上万个文件,光显示都要很长时间,这不行。
但还是十分感谢

 
  呵呵,不知道你有那么多文件啊。

  如果你知道F:\盘有一个文件(new.wbf)的话,可以改成dir /b F:\new.wbf,这样速度应该会提高一点。
  
  另外,我想知道我那个方法最后到底成功了没有?达到最终的目的了没有?
 
作者: NaturalJ0     时间: 2006-10-28 07:56
如果没有连接,难道不会出现 A F R 选择?
dir f:\ (如果没有连接会提示什么?)
作者: lxmxn     时间: 2006-10-28 10:16


  Quote:
Originally posted by NaturalJ0 at 2006-10-28 07:56:
如果没有连接,难道不会出现 A F R 选择?
dir f:\ (如果没有连接会提示什么?)


  什么A F R选择??可以说清楚一点否?

作者: NaturalJ0     时间: 2006-10-28 12:18
CDR101: Not ready reading drive E
Abort, Retry, Fail?              

比如这种,看来是我想错了。
作者: rgb82754670     时间: 2006-10-29 00:38    标题: 20楼的仁兄我改成如下:881.bat,测试结果看附图

dir f:\1.wbf
if errorlevel 1 goto fail
if errerlevel 0 goto true

:true
if not exist F:\%1.wbf goto yes
copy F:\%1.wbf .
echo One file(s) copied successfully.
pause
ck2 %1.wbf

:fail
echo The Windows XP has not on OR the Network has disconnected.
pause
goto eof

:yes
echo The Windows XP has not exist the file you want.
pause
goto eof

:eof

测试结果看附图(网络正常,最后都没有执行ck2 1%)

[ Last edited by rgb82754670 on 2006-10-29 at 12:40 AM ]
附件 1: SCREEN04.jpg (2006-10-29 00:38, 13.33 K, 下载附件所需积分 1点 ,下载次数: 2)


附件 2: SCREEN05.jpg (2006-10-29 00:38, 13.12 K, 下载附件所需积分 1点 ,下载次数: 2)



作者: lxmxn     时间: 2006-10-29 18:04

  能力有限,不好意思哈。。。