中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 这个为什么会陷入死循环? 上一主题 | 下一主题
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『楼 主』:  这个为什么会陷入死循环?

原bat如下

@echo off

echo 文件拷贝中,请稍后

for /f "tokens=2 delims=\" %%e in ('cd') do copy /e /z /d /y /i /k /h /r /v /c d:\"%%e" e:\"%%e"

echo 文件拷贝完成 && pause

exit

为什么我执行了会变成第二行和第三行反复循环执行而不拷贝文件?

因为我对for命令不是完全理解,请高手指教,另:for中的/f和/r有什么不同?
谢谢

2007-4-26 15:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 2 楼』:  



  Quote:
Originally posted by chkau at 2007-4-26 02:41 AM:
原bat如下

@echo off

echo 文件拷贝中,请稍后

for /f "tokens=2 delims=\" %%e in ('cd') do copy /e /z /d /y /i /k /h /r /v /c d:\"%%e" e:\"%%e"

echo ...

呵呵,你的胆子可真不小哦:) 好在不是删除文件!

问题1: "tokens=2 delims=\" %%e in ('cd')
假设,所在盘符为 d:\program files\flyinspace.
         此时,所找到的文件为 xcopy d:\program e:\program
         文件找不到。
问题2: copy /e /z /d /y /i /k /h /r /v /c d:\"%%e" e:\"%%e"
copy 有这么多参数么??
         应该是: xcopy 吧。
问题3:我实在不明白你到底要做什么?
写了这么一段不明不白的程序出来。



知,不觉多。不知,乃求知
2007-4-26 17:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『第 3 楼』:  

楼主的要复制目录下的目录或文件可以这样:
for /f "tokens=* delims=" %%i in ('dir /b d:\test\') do xcopy /e /i  D:\test\%%i E:\test\%%i
pause

不过会提示确定目录或文件,不知道怎么让xcopy静默复制

2007-4-27 05:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 4 楼』:  

我的目的是让这段批处理放到D盘任意一个二级文件夹内执行,就在该目录和E盘的同名目录间执行XCOPY
回2楼,不知道你实验没有,for /f "tokens=2 delims=\" %%e in ('cd') do copy /e /z /d /y /i /k /h /r /v /c d:\"%%e" e:\"%%e"
这段代码,在cmd下执行%e的值是在该bat所在的当前二级目录
比如放在D:\program files下,则%e为program files,因为delims=\后面并没有空格
所以copy /e /z /d /y /i /k /h /r /v /c d:\"program files" e:\"programe files"
命令是可行的

不过我确实不明白,为什么放到批处理里面会出现死循环???个人估计和/f参数有关,望各位高手指点/f和/r参数究竟是什么意思,小弟拜求了,winxp的for /?确实写的让人越看越糊涂

2007-4-27 11:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 5 楼』:  

实在不好意思,我给出的代码打错了,应该是XCOPY,而不是copy,望各位见谅.........

2007-4-27 11:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  

最直接的方式是打开命令行回显,再来测试,查找原因。

2007-4-27 12:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 7 楼』:  

我就是打开了回显,所以知道是第二行和第三行反复循环
就是不知道为什么会这样,感觉像是循环赋值,但是又不敢确定,一直对/f和/r参数都不是很了解,但是换了/r参数一样一直循环,而%%e的参数又是正确的,实在不解

2007-4-27 14:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 8 楼』:  

LZ的代码是不是精简过了再帖上来的???如果是主贴代码,是不可能在第二行和第三行反复循环。

for /r /f参数在for/?中都有说明:/r 指定目录,/f 设定分隔、跳行

xcopy 相同目录方式复制静默复制可用:
echo.f|xcopy/y "d:\路径\*.*" "e:\路径\*.*">nul
会自动根据文件所在子目录建立对应的新目录,>nul用来屏蔽显示

2007-4-27 22:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 9 楼』:  

这个没有精简过
for /f "tokens=2 delims=\" %%e in ('cd') do set "wjj=%%e"

xcopy /e /z /d /y /i /k /h /r /v /c d:\"%wjj%" e:\"%wjj%"

md d:\"%wjj%"\2

rd d:\"%wjj%"\2

echo ---文件复制完成---

ping -n 2 127.0.0.1>nul

exit
但实际上是一样的代码,稍作了修改,大家可以实验一下,在D盘新建一个目录,然后把这个批处理丢进去执行

2007-4-29 12:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 10 楼』:  

请各位大大帮忙看一下啊

2007-4-30 01:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 11 楼』:  

测试:

e盘新建文件夹 1


for /f "tokens=2 delims=\" %%e in ('cd') do set "wjj=%%e"

xcopy /e /z /d /y /i /k /h /r /v /c e:\"%wjj%" d:\"%wjj%"

md d:\"%wjj%"\2

rd d:\"%wjj%"\2

echo ---文件复制完成---

ping -n 2 127.0.0.1>nul

exit
这段代码保存到了1.bat存入 e:\1\
然后cmd切换到 e:\1目录下;执行1.bat
没问题;
d:生成文件夹1里面包含 1.bat

不知道lz说的问题所在

2007-4-30 02:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 12 楼』:  

.........我发现问题了..........
晕啊我犯了一个最低级的错误
我把bat的名字设置为xcopy.bat............
晕了,不好意思麻烦各位了

2007-4-30 02:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by chkau at 2007-4-29 13:29:
.........我发现问题了..........
晕啊我犯了一个最低级的错误
我把bat的名字设置为xcopy.bat............
晕了,不好意思麻烦各位了



2007-4-30 02:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 14 楼』:  

^^我发觉我最近越来越可爱了,嘿嘿,各位大哥表烦偶哈

2007-4-30 02:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bingxiao20
初级用户





积分 68
发帖 31
注册 2007-3-23
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by chkau at 2007-4-29 01:29 PM:
.........我发现问题了..........
晕啊我犯了一个最低级的错误
我把bat的名字设置为xcopy.bat............
晕了,不好意思麻烦各位了

嘿。。以前也曾经犯过这样的毛病。。。。

2007-4-30 03:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: