Board logo

标题: 请问细节 [打印本页]

作者: warmoon     时间: 2006-3-11 23:27    标题: 请问细节

在批处理文件中有这么一段用于整盘同类文件的备份。

md e:\bb

dir /b /s f:\*.txt >e:\a.txt

for /f %%i in (e:\a.txt) do copy /y %%i e:\bb


最后的命令把所有F盘的txt文件都烤到了e:\bb,但如果"F:\.....\*.txt"的路径中含有空格键,那么路径就会在空格处断掉,导致该txt文件不能复制,而进入下一个文件的复制。

不知哪位大侠能教教鄙人是什么原因,如何改进。洗耳恭听!


作者: JonePeng     时间: 2006-3-12 00:24
带空格的文件名是长文件名的问题。这类问题已经讨论过多次了,用双引号括住路径名就迎刃而解了:

for /f %%i in (e:\a.txt) do copy /y "%%i" e:\bb
作者: 3742668     时间: 2006-3-12 01:30
LZ真BT啊,是不是不用for就不算是真正的批处理?
很简单的一件事,居然弄得这复杂。
md e:\bb
copy f:\*.txt e:\bb\*.txt
copy,xcopy,这两个怎么也比for好用高效吧。
作者: 0401     时间: 2006-3-12 15:24
to 楼上:

LZ目的是拷贝F盘的所有txt文件。注意“/s”参数。

to LZ:

像2楼说的那样。但别忘记加上“delims=”。

for /f “delims=” %%i in (e:\a.txt) do copy /y "%%i" e:\bb
作者: 3742668     时间: 2006-3-12 18:49
to 楼上
请注意我特意有提到xcopy命令。
作者: 0401     时间: 2006-3-12 21:37
to 楼上:

不好意思,有注意到的,不过那时没去验证。所以我刚才特意查过xcopy的帮助,虽然能“把所有F盘的txt文件都拷到了e:\bb”,但同时复制时会创建原有的目录结构,显然楼主不是想表达这个意思。
不过仍谢谢你的提醒。
作者: 3742668     时间: 2006-3-12 22:40
呵呵,这也正好是用xcopy的原因,如果复制的不同目录下的文件有重名的怎么办?
而且此例中的批处理不能处理 要复制的文件中有隐藏,系统属性的文件  的情况。
作者: Climbing     时间: 2006-3-13 00:23
这种讨论有点儿形而上学了,其实楼主问的问题很简单,如果处理文件名中带空格的文件的拷贝。Jone的答复再加上0401的补充,已经很完美的解决了问题。
作者: 3742668     时间: 2006-3-13 02:45
形而上学:形而上学是与辩证法相对立的世界观和方法论。其特点是用孤立的、片面的、静止的观点去看世界。
作者: warmoon     时间: 2006-3-15 21:48
好感激大家顶贴!鼓掌鼓掌~~~啪啦啪啦啪啦~~~
可是问题还在:

md e:\bb

dir /b /s f:\*.txt >e:\a.txt

for /f “delims=” %%i in (e:\a.txt) do copy /y "%%i" e:\bb

CMD说:“此时不应有”。”
这个For 语句还有待考究呢。
作者: 3742668     时间: 2006-3-16 10:34
CMD说:“此时不应有”。”
很显然是for出了毛病,此时不应有    ”     
很显然毛病是出在 for /f 后面
一般来说"是不会出问题的,既然提示它出了问题我想很可能是你自己的问题。在for/f后面要么是接",要么是接%,接了别的字符才会提示错误,所以很可能是你的"输入有问题。
你重新打开记事本,在半角,英文输入法下重新输入一遍看看,如果不行切换到全角看看。
我认为这个for语句没有什么好研究的,值得研究的是某些人。。。
作者: warmoon     时间: 2006-3-16 19:25
经某人考究终于发现问题之所在,现报如下:
问题:  俺在中文状态下输了那前两个“”引号!导致DOS不买帐。
等级:  低级
综合:  新手常犯之低级糊涂!
呈辞:  望大侠莫怪!

在此谢罪!


  非常感谢大家的帮助,小生就此拜谢!
作者: Climbing     时间: 2006-3-17 08:57


  Quote:
Originally posted by 3742668 at 2006-3-13 02:45:
形而上学:形而上学是与辩证法相对立的世界观和方法论。其特点是用孤立的、片面的、静止的观点去看世界。

这种引用解释的行为是典型的形而上学的行为。
作者: 3742668     时间: 2006-3-17 13:06
是~~~~~~~么?
不要不懂装懂哦~!
作者: bagpipe     时间: 2006-3-17 13:24
其实LZ的问题是这样的,说如果a.txt文件的路径带有空格怎么办,那咱们就这么办for /f “usebackq” %%i in ("e:\a.txt") do copy /y "%%i" e:\bb,其实没有必要用DELIMS的
作者: 3742668     时间: 2006-3-17 14:18
其实没必要用for的。