中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-02 15:03
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » dos6.22机上做个拷XP机中指定文件的批处理 查看 3,489 回复 30
16 发表于 2006-10-23 10:53 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  不好意思,因为没有DOS 6.22的环境,所以不知道哪些命令可以用,哪些不可以用。我也没办法。
17 不知道lxmxn兄能否就下面的几个命令帮我写个批处理 发表于 2006-10-26 10:49 ·  中国 浙江 杭州 电信
初级用户
rgb红绿蓝
积分 126
发帖 42
注册 2006-07-22 01:44
19年会员
UID 59003
性别 男
状态 离线
纯DOS自带的批处理命令:

@
CALL
CHOICE用法:CHOICE:按键表] 选择值,秒数]
其中,/C表示可选则的按键,/N表示不要显示提示信息,/S表示大小写字符敏感方式,/T表示若在批定的时间内没有选则的话,自动执行/C中定义的某个选择值。显示文本是CHOICE命令执行时的提示信息。选择结果将用ERRORLEVEL值来表示。
ECHO :显示指定的信息。通常显示在屏幕上。
FOR :用法:FOR %变量名 IN (文件集) DO 命令
GOTO :转到批文件内部的某个标号下执行。
IF :条件判断命令。用法1:IF EXIST 文件名 命令
用法2:IF ERRORLEVEL 错误返回代号 命令
用法3:IF 字符串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命令。这时,整个参数列将向前推。
[rgb红绿蓝
18 发表于 2006-10-26 14:09 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

@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 ]
19 dos6.22下测试如下 发表于 2006-10-27 11:01 ·  中国 浙江 杭州 电信
初级用户
rgb红绿蓝
积分 126
发帖 42
注册 2006-07-22 01:44
19年会员
UID 59003
性别 男
状态 离线
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 ]
附件
SCREEN01.jpg
SCREEN02.jpg
[rgb红绿蓝
20 发表于 2006-10-27 20:43 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  兄弟,再试试这个,如果还不行,请继续跟帖讨论。=_=!!

@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竟然不支持"&"连接符.汗一个..
21 发表于 2006-10-27 22:24 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
你八楼的代码改成以下试试,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
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
rgb82754670 +3 2006-10-28 03:29
我今后在论坛的目标就是做个超级坏人!!!
22 发表于 2006-10-27 23:32 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线

@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 ]
23 感谢21楼,你的方法可以 发表于 2006-10-28 03:54 ·  中国 浙江 杭州 电信
初级用户
rgb红绿蓝
积分 126
发帖 42
注册 2006-07-22 01:44
19年会员
UID 59003
性别 男
状态 离线
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楼,你的方法可以
[rgb红绿蓝
24 发表于 2006-10-28 03:57 ·  中国 浙江 杭州 电信
初级用户
rgb红绿蓝
积分 126
发帖 42
注册 2006-07-22 01:44
19年会员
UID 59003
性别 男
状态 离线
Originally posted by lxmxn at 2006-10-27 20:43:

  兄弟,再试试这个,如果还不行,请继续跟帖讨论。=_=!!

@echo off
dir f:\
if errorlevel 1 goto fail
if errerlevel 0 goto true

:true
if n ...


20楼的仁兄,dir f:\ 我有上万个文件,光显示都要很长时间,这不行。
但还是十分感谢
[rgb红绿蓝
25 发表于 2006-10-28 04:13 ·  中国 浙江 杭州 电信
初级用户
rgb红绿蓝
积分 126
发帖 42
注册 2006-07-22 01:44
19年会员
UID 59003
性别 男
状态 离线
Originally posted by NaturalJ0 at 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 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 ]
附件
SCREEN03.jpg
[rgb红绿蓝
26 发表于 2006-10-28 04:49 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
Originally posted by rgb82754670 at 2006-10-28 03:57:
20楼的仁兄,dir f:\ 我有上万个文件,光显示都要很长时间,这不行。
但还是十分感谢

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

  如果你知道F:\盘有一个文件(new.wbf)的话,可以改成dir /b F:\new.wbf,这样速度应该会提高一点。
  
  另外,我想知道我那个方法最后到底成功了没有?达到最终的目的了没有?
 
27 发表于 2006-10-28 07:56 ·  中国 江苏 苏州 吴中区 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
如果没有连接,难道不会出现 A F R 选择?
dir f:\ (如果没有连接会提示什么?)
28 发表于 2006-10-28 10:16 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
Originally posted by NaturalJ0 at 2006-10-28 07:56:
如果没有连接,难道不会出现 A F R 选择?
dir f:\ (如果没有连接会提示什么?)


  什么A F R选择??可以说清楚一点否?
29 发表于 2006-10-28 12:18 ·  中国 江苏 苏州 吴中区 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
CDR101: Not ready reading drive E
Abort, Retry, Fail?

比如这种,看来是我想错了。
30 20楼的仁兄我改成如下:881.bat,测试结果看附图 发表于 2006-10-29 00:38 ·  中国 浙江 杭州 萧山区 电信
初级用户
rgb红绿蓝
积分 126
发帖 42
注册 2006-07-22 01:44
19年会员
UID 59003
性别 男
状态 离线
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 ]
附件
SCREEN04.jpg
SCREEN05.jpg
[rgb红绿蓝
论坛跳转: