标题: [文件操作] 批处理for循环如何批量移动文件? [打印本页]
作者: fly2love 时间: 2010-6-1 09:37 标题: 批处理for循环如何批量移动文件?
问题描述:
1、批处理文件在D:\batfile
2、有一个文件列表,名字叫做test.txt, 放在同一个目录下,即是:\batfile
3、test.txt 里面其实都是文件名,内容如下:
1234.bmp
3456.bmp
这两个文件都在 F:\image 目录下。
想要通过for循环,实现将这些文件移动或者拷贝到E:\image的目的,代码如下
@echo off
for /f %%i in (test.txt) do copy f:\image\%%i E:\image
pause
但是出现错误:系统找不到指定文件。
我的问题有2:
1、如何解决变量名和路径连接的问题?
2、如果test.txt 文件不再bat目录的同名目录下,是不是在小括号里面加上全路径也是可以,如:
for /f %%i in (f:\test.txt) do copy f:\image\%%i E:\image
感觉应该是不难的问题,就是不会,请大家帮忙!
[ 本帖最后由 fly2love 于 2010-6-1 10:14 编辑 ]
作者: fly2love 时间: 2010-6-1 09:46
在线等啊,等人帮忙解答下
作者: fly2love 时间: 2010-6-1 10:16
已经搞定
for /f %%i in (test.txt) do move "%%i" "%e:\image%"
用双引号括起来就可以。
原帖由 fly2love 于 2010-6-1 09:37 发表
问题描述:
1、批处理文件在D:\batfile
2、有一个文件列表,名字叫做test.txt, 放在同一个目录下,即是:\batfile
3、test.txt 里面其实都是文件名,内容如下:
1234.bmp
3456.bmp
这两个文件都在 ...
作者: todayambition 时间: 2010-6-1 12:23
我按照楼主说的制造了那种情况,调试正常
可能是test.txt中的文件名和f:\image\下的文件名对不上,再就是看下E盘和F盘两个文件夹名错了没
在就是test.txt中的文件名要f:\image\下都存在相应的文件,否则报错
[ 本帖最后由 todayambition 于 2010-6-1 12:25 编辑 ]
作者: hanyeguxing 时间: 2010-6-1 16:36
- for /f "usebackq delims=" %%i in ("f:\test.txt") do if exist "f:\image\%%i" move "f:\image\%%i" "E:\image"
复制代码
usebackq开关允许()内使用引号直接括文件地址,即允许使用空格
delims=允许文本内使用空格
if exist "f:\image\%%i" 判断文件存在才执行,也可以不使用而在move后加2>nul屏蔽错误信息
move "f:\image\%%i" "E:\image"允许路径中有空格
当文本中为完整路径时"f:\image\%%i"写成"%%i"
move 只能跨分区移动文件而不能跨区移动目录.
[ 本帖最后由 hanyeguxing 于 2010-6-1 16:42 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |