![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 11:09 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 这个为什么会陷入死循环? |
| 可打印版本 1,972 / 15 |
| 第1楼 chkau | 发表于 2007-04-26 15:41 |
| 初级用户 发帖 47 积分 101 | |
|
这个为什么会陷入死循环? 原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有什么不同? 谢谢 |
|
| 第2楼 flyinspace | 发表于 2007-04-26 17:25 |
| 银牌会员 发帖 517 积分 1,206 | |
Originally posted by chkau at 2007-4-26 02:41 AM: 呵呵,你的胆子可真不小哦:) 好在不是删除文件! 问题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:我实在不明白你到底要做什么? 写了这么一段不明不白的程序出来。 |
|
| 第3楼 lililulula | 发表于 2007-04-27 05:34 |
| 中级用户 发帖 138 积分 302 | |
|
楼主的要复制目录下的目录或文件可以这样:
for /f "tokens=* delims=" %%i in ('dir /b d:\test\') do xcopy /e /i D:\test\%%i E:\test\%%i pause 不过会提示确定目录或文件,不知道怎么让xcopy静默复制 |
|
| 第4楼 chkau | 发表于 2007-04-27 11:52 |
| 初级用户 发帖 47 积分 101 | |
|
我的目的是让这段批处理放到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 /?确实写的让人越看越糊涂 |
|
| 第5楼 chkau | 发表于 2007-04-27 11:55 |
| 初级用户 发帖 47 积分 101 | |
|
实在不好意思,我给出的代码打错了,应该是XCOPY,而不是copy,望各位见谅.........
|
|
| 第6楼 lxmxn | 发表于 2007-04-27 12:31 |
| 版主 发帖 4,938 积分 11,386 | |
|
最直接的方式是打开命令行回显,再来测试,查找原因。
|
|
| 第7楼 chkau | 发表于 2007-04-27 14:02 |
| 初级用户 发帖 47 积分 101 | |
|
我就是打开了回显,所以知道是第二行和第三行反复循环
就是不知道为什么会这样,感觉像是循环赋值,但是又不敢确定,一直对/f和/r参数都不是很了解,但是换了/r参数一样一直循环,而%%e的参数又是正确的,实在不解 |
|
| 第8楼 zh159 | 发表于 2007-04-27 22:36 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
LZ的代码是不是精简过了再帖上来的???如果是主贴代码,是不可能在第二行和第三行反复循环。
for /r /f参数在for/?中都有说明:/r 指定目录,/f 设定分隔、跳行 xcopy 相同目录方式复制静默复制可用: echo.f|xcopy/y "d:\路径\*.*" "e:\路径\*.*">nul 会自动根据文件所在子目录建立对应的新目录,>nul用来屏蔽显示 |
|
| 第9楼 chkau | 发表于 2007-04-29 12:39 |
| 初级用户 发帖 47 积分 101 | |
|
这个没有精简过
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盘新建一个目录,然后把这个批处理丢进去执行 |
|
| 第10楼 chkau | 发表于 2007-04-30 01:26 |
| 初级用户 发帖 47 积分 101 | |
|
请各位大大帮忙看一下啊
|
|
| 第11楼 bjsh | 发表于 2007-04-30 02:14 |
| 银牌会员 发帖 621 积分 2,000 | |
|
测试:
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说的问题所在 |
|
| 第12楼 chkau | 发表于 2007-04-30 02:29 |
| 初级用户 发帖 47 积分 101 | |
|
.........我发现问题了..........
晕啊我犯了一个最低级的错误 我把bat的名字设置为xcopy.bat............ 晕了,不好意思麻烦各位了 |
|
| 第13楼 zh159 | 发表于 2007-04-30 02:31 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by chkau at 2007-4-29 13:29: ![]() ![]() |
|
| 第14楼 chkau | 发表于 2007-04-30 02:34 |
| 初级用户 发帖 47 积分 101 | |
|
^^我发觉我最近越来越可爱了,嘿嘿,各位大哥表烦偶哈
|
|
| 第15楼 bingxiao20 | 发表于 2007-04-30 03:04 |
| 初级用户 发帖 31 积分 68 | |
Originally posted by chkau at 2007-4-29 01:29 PM: 嘿。。以前也曾经犯过这样的毛病。。。。 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |