求个批处理文件写法

来源:百度知道 编辑:UC知道 时间:2024/06/07 00:24:16
目标:从list.txt文件里读取文件列表,并且按相对目录结构复制到E:\tar下面
具体:比如list.txt内容如下:
D:\源\a\a\a.txt
D:\源\b\b\b.jpg
D:\源\b\a\c.ini
完成后E盘结构如下
E:\tar\a\a\a.txt
E:\tar\b\b\b.jpg
E:\tar\b\a\c.ini

读取文件和路径什么的都会写,但是创建相对路径这个感觉好难啊,谁帮帮忙?
由于可能有
D:\源\a\b\
D:\源\a\a\b.txt
等文件或文件夹的存在,所以不能用全文件夹复制的办法

有我描述不好的麻烦说下

2楼的提示语法错误,3楼的直接创建了一个ols文件夹退出...

创建了一个 ols 文件夹.......
MS我按你描述 建了
D:\源\a\a\a.txt
D:\源\b\b\b.jpg
D:\源\b\a\c.ini
并把list.txt的内容 复制到1.txt
然后运行下面的代码 成功...

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (1.txt) do (set a=%%i
set b=!a:~5,4!
xcopy "!a!" "E:\tar\!b!" /y)
pause

我发现你list.txt中的路径那个 源 字 在for获取它时是乱码
所以我测试时 改了 源 这个文件夹名 下面代码测试通过
要求是 你的实际需求必须是 复制 list.txt中 路径如 D:\源\a\a\a.txt 这样3层文件夹下的文件
文件夹名和 文件名可以是除了 特殊字符的 任意字母 数字 汉字
如果复制不了 建议你修改 源 这个文件夹名 再试即可
@echo off
for /f %%a in (1.txt) do (
for /f "tokens=1-4 delims=\" %%i in ("%%a") do (xcopy "%%a" "E:\tar\%%k\%%l\" /y)
)
pause

@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f %%i in (list.txt) do (
set var1=%%i
set var2=!var1:D:&#