|
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
状态 离线
|
|
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 |
|