Board logo

标题: [文件操作] 批处理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

  1. 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://www.bathome.net/) Powered by Discuz! 7.2