[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理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 编辑 ]

在线等啊,等人帮忙解答下

TOP

已经搞定

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
这两个文件都在  ...

TOP

我按照楼主说的制造了那种情况,调试正常

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

[ 本帖最后由 todayambition 于 2010-6-1 12:25 编辑 ]
@echo off
set /p=>hlw1.txt<nul

TOP

  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 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表