找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17334|回复: 4

[文件操作] 批处理for循环如何批量移动文件?

[复制链接]
发表于 2010-6-1 09:37:45 | 显示全部楼层 |阅读模式
问题描述:
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 编辑 ]
 楼主| 发表于 2010-6-1 09:46:05 | 显示全部楼层
在线等啊,等人帮忙解答下
 楼主| 发表于 2010-6-1 10:16:37 | 显示全部楼层
已经搞定

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
这两个文件都在  ...
发表于 2010-6-1 12:23:58 | 显示全部楼层
我按照楼主说的制造了那种情况,调试正常

可能是test.txt中的文件名和f:\image\下的文件名对不上,再就是看下E盘和F盘两个文件夹名错了没
在就是test.txt中的文件名要f:\image\下都存在相应的文件,否则报错

[ 本帖最后由 todayambition 于 2010-6-1 12:25 编辑 ]
发表于 2010-6-1 16:36:25 | 显示全部楼层
  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 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:34 , Processed in 0.012854 second(s), 11 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表