标题: [文件操作] [已解决]批处理批量复制时路径带空格怎么办 [打印本页]
作者: renmingwu 时间: 2009-6-11 09:21 标题: [已解决]批处理批量复制时路径带空格怎么办
各位好:
今天在编写代码中遇到了这么一个问题,我想从一个指定的文件夹中考出指定的文件类型,指定的文件夹中包含若干目录和子目录,目录中也包括空格,我已取得所有文件的具体地址,可由于有空格,DOS下只能识别空格之前的路径,我想问下大家是怎么解决这个问题的。方法和代码如下:
@echo off
for /r "v:/WTP650" %%i in (*.hup) do echo %%i >>hup.txt
cls
for /r "v:/WTP650" %%i in (*.pga) do echo %%i >>pga.txt
pause
FOR /F "" %%i IN (hup.txt) DO copy %%i f:\aa
cls
FOR /F "" %%i IN (pga.txt) DO copy %%i f:\aa
从v盘的wtp650及其子目录中取出*.hub文件的路径写到hub.txt中,从v盘的wtp650及其子目录中取出*.pga到pga.txt中,运行完成后,先拷贝hub.txt中包含的文件到F:\aa,然后再拷贝pga.txt中的文件到F:\aa中。
可问题是hup.txt和pga.txt中的路径中含有空格,在拷贝中会出现问题,下面是部分路径名,我想请教下大家,能不能自动给里面的内容加上引号,当然是自动加。
v:\WTP650\WMS\2964-YF211\286A0066-016 2964\Test\194512.hup
v:\WTP650\WMS\2964-YF211\286A0072-044 2964\Test\194518.hup
v:\WTP650\WMS\2964-YF211\286A0074-018 2964\Test\194523.hup
v:\WTP650\WMS\2964-YF211\286A0076-125 2964\Test\194727.hup
v:\WTP650\WMS\2964-YF211\286A0076-125 2964A\Test\196196.hup
v:\WTP650\WMS\2964-YF211\286A0080-031 2964\Test\194729.hup
v:\WTP650\WMS\2964-YF211\286A0080-031 2964A\Test\196324.hup
v:\WTP650\WMS\2965-YH303\286A0066-016 2965\194538.hup
v:\WTP650\WMS\2965-YH303\286A0066-016 2965\Test\194538.hup
[ 本帖最后由 renmingwu 于 2009-6-12 08:22 编辑 ]
作者: terse 时间: 2009-6-11 09:32
这样不是加上了?直接COPY不行吗 绕来绕去啊
echo "%%i"
作者: kent 时间: 2009-6-11 09:43
- for /r "v:/WTP650" %%i in (*.hup,*.pga) do copy "%%i" f:\aa
复制代码
已经测试过,OK!
作者: renmingwu 时间: 2009-6-11 10:04
谢谢你,一言惊醒梦中人,已经好了。直接COPY不行,因为有空格,虽然已经加上了,可运行的时候还是有问题,还是会在空格的地方断掉,我再测试下。
@echo off
for /r "v:/WTP650" %%i in (*.hup) do echo "%%i" >>hup.txt
cls
for /r "v:/WTP650" %%i in (*.pga) do echo "%%i" >>pga.txt
pause
FOR /F "" %%i IN (hup.txt) DO copy %%i f:\aa
cls
FOR /F "" %%i IN (pga.txt) DO copy %%i f:\aa
作者: renmingwu 时间: 2009-6-11 10:09
原帖由 kent 于 2009-6-11 09:43 发表
for /r "v:/WTP650" %%i in (*.hup,*.pga) do copy "%%i" f:\aa
已经测试过,OK!
谢谢你,我也测试了你的这段代码,真的行了,感谢你们的帮助,真诚的!
也请版主帮忙改下,找不到怎么改成已解决!
[ 本帖最后由 renmingwu 于 2009-6-11 12:57 编辑 ]
作者: kent 时间: 2009-6-11 13:34
原帖由 renmingwu 于 2009-6-11 10:04 发表
谢谢你,一言惊醒梦中人,已经好了。直接COPY不行,因为有空格,虽然已经加上了,可运行的时候还是有问题,还是会在空格的地方断掉,我再测试下。
@echo off
for /r "v:/WTP650" %%i in (*.hup) do echo "%%i" >>h ...
一句话就可以实现的事情,你干嘛非要整这么多行?
不过如果非要像你这样写,也可以,但是要改一下,有两种改法:
a.- FOR /F "tokens=*" %%i IN (hup.txt) DO copy %%i f:\aa
-
- FOR /F "tokens=*" %%i IN (pga.txt) DO copy %%i f:\aa
复制代码
b.- FOR /F "delims=," %%i IN (hup.txt) DO copy %%i f:\aa
-
-
- FOR /F "delims=," %%i IN (pga.txt) DO copy %%i f:\aa
复制代码
你没有文件夹的名字里有逗号的吧?
for /f 默认是以空格和或跳格键作为间隔符的,"for /?"里就有说明,可以仔细看看。
PS: 你自己就可以改本帖的标题啊,编辑楼主的帖子即可,在标题前加上 【已解决】
作者: renmingwu 时间: 2009-6-12 08:22
原帖由 kent 于 2009-6-11 13:34 发表
一句话就可以实现的事情,你干嘛非要整这么多行?
不过如果非要像你这样写,也可以,但是要改一下,有两种改法:
a.FOR /F "tokens=*" %%i IN (hup.txt) DO copy %%i f:\aa
FOR /F "tokens=*" %%i IN (pga ...
谢谢你,初学,对FOR还是认识的不深刻!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |