中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-30 01:09
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 请问细节 查看 1,732 回复 15
楼 主 请问细节 发表于 2006-03-11 23:27 ·  中国 浙江 宁波 电信
初级用户
积分 40
发帖 13
注册 2006-03-11 15:43
20年会员
UID 51811
性别 男
来自 浙江温州曾在宁波
状态 离线
在批处理文件中有这么一段用于整盘同类文件的备份。

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文件不能复制,而进入下一个文件的复制。

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

2 发表于 2006-03-12 00:24 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562
发帖 1,883
注册 2004-01-19 00:00
22年会员
UID 15812
性别 男
来自 广东广州
状态 离线
带空格的文件名是长文件名的问题。这类问题已经讨论过多次了,用双引号括住路径名就迎刃而解了:

for /f %%i in (e:\a.txt) do copy /y "%%i" e:\bb
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
3 发表于 2006-03-12 01:30 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
LZ真BT啊,是不是不用for就不算是真正的批处理?
很简单的一件事,居然弄得这复杂。
md e:\bb
copy f:\*.txt e:\bb\*.txt
copy,xcopy,这两个怎么也比for好用高效吧。
4 发表于 2006-03-12 15:24 ·  中国 福建 漳州 电信
中级用户
★★
带走
积分 435
发帖 88
注册 2005-09-24 19:22
20年会员
UID 42793
状态 离线
to 楼上:

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

to LZ:

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

for /f “delims=” %%i in (e:\a.txt) do copy /y "%%i" e:\bb
5 发表于 2006-03-12 18:49 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
to 楼上
请注意我特意有提到xcopy命令。
6 发表于 2006-03-12 21:37 ·  中国 福建 漳州 电信
中级用户
★★
带走
积分 435
发帖 88
注册 2005-09-24 19:22
20年会员
UID 42793
状态 离线
to 楼上:

不好意思,有注意到的,不过那时没去验证。所以我刚才特意查过xcopy的帮助,虽然能“把所有F盘的txt文件都拷到了e:\bb”,但同时复制时会创建原有的目录结构,显然楼主不是想表达这个意思。
不过仍谢谢你的提醒。
7 发表于 2006-03-12 22:40 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
呵呵,这也正好是用xcopy的原因,如果复制的不同目录下的文件有重名的怎么办?
而且此例中的批处理不能处理 要复制的文件中有隐藏,系统属性的文件 的情况。
8 发表于 2006-03-13 00:23 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
这种讨论有点儿形而上学了,其实楼主问的问题很简单,如果处理文件名中带空格的文件的拷贝。Jone的答复再加上0401的补充,已经很完美的解决了问题。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
9 发表于 2006-03-13 02:45 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
形而上学:形而上学是与辩证法相对立的世界观和方法论。其特点是用孤立的、片面的、静止的观点去看世界。
10 发表于 2006-03-15 21:48 ·  中国 浙江 宁波 电信
初级用户
积分 40
发帖 13
注册 2006-03-11 15:43
20年会员
UID 51811
性别 男
来自 浙江温州曾在宁波
状态 离线
好感激大家顶贴!鼓掌鼓掌~~~啪啦啪啦啪啦~~~
可是问题还在:

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 语句还有待考究呢。
11 发表于 2006-03-16 10:34 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
CMD说:“此时不应有”。”
很显然是for出了毛病,此时不应有 ”
很显然毛病是出在 for /f 后面
一般来说"是不会出问题的,既然提示它出了问题我想很可能是你自己的问题。在for/f后面要么是接",要么是接%,接了别的字符才会提示错误,所以很可能是你的"输入有问题。
你重新打开记事本,在半角,英文输入法下重新输入一遍看看,如果不行切换到全角看看。
我认为这个for语句没有什么好研究的,值得研究的是某些人。。。
12 发表于 2006-03-16 19:25 ·  中国 浙江 宁波 电信
初级用户
积分 40
发帖 13
注册 2006-03-11 15:43
20年会员
UID 51811
性别 男
来自 浙江温州曾在宁波
状态 离线
经某人考究终于发现问题之所在,现报如下:
问题: 俺在中文状态下输了那前两个“”引号!导致DOS不买帐。
等级: 低级
综合: 新手常犯之低级糊涂!
呈辞: 望大侠莫怪!

在此谢罪!


非常感谢大家的帮助,小生就此拜谢!
13 发表于 2006-03-17 08:57 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
Originally posted by 3742668 at 2006-3-13 02:45:
形而上学:形而上学是与辩证法相对立的世界观和方法论。其特点是用孤立的、片面的、静止的观点去看世界。


这种引用解释的行为是典型的形而上学的行为。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
14 发表于 2006-03-17 13:06 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
是~~~~~~~么?
不要不懂装懂哦~!
15 发表于 2006-03-17 13:24 ·  中国 北京 顺义区 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144
发帖 425
注册 2005-10-20 00:00
20年会员
UID 43784
来自 北京
状态 离线
其实LZ的问题是这样的,说如果a.txt文件的路径带有空格怎么办,那咱们就这么办for /f “usebackq” %%i in ("e:\a.txt") do copy /y "%%i" e:\bb,其实没有必要用DELIMS的
论坛跳转: