标题: [文件操作] 批处理如何根据txt文本中的文件路径复制文件并保留目录结构? [打印本页]
作者: tanrr 时间: 2023-6-1 19:53 标题: 批处理如何根据txt文本中的文件路径复制文件并保留目录结构?
各位大神,假如一个TXT文件包括一下文件路径
C:\1\s\u\Fdfgfer.aaa
C:\1\s\somecfil.sss
C:\1\s\somecfse.sss
C:\1\s\somerccfse.sds
C:\1\s\lkfig\oofauhdgjin\oofauhdgjin.uf
C:\1\s\lkfig\oofauhdgjin\ds.dsd
C:\1\s\lkfig\oofauhdgjin\df.jff
C:\1\s\gfg.sss
C:\1\s\lkfig\lkfig.dsd
C:\1\s\somemon.sss
C:\1\s\lkfig
C:\1\s\lkfig\Fish.dsd
批处理如何根据TXT文件中的路径复制文件到一个新文件夹,同时创建文件夹,保留与源相同的文件目录结构。(“C:\1\s\”目录除外,或者仅盘符除外)谢谢!
作者: xp3000 时间: 2023-6-1 20:32
本帖最后由 xp3000 于 2023-6-1 23:20 编辑
- @echo off
- setlocal enabledelayedexpansion
- for /f %%i in ('dir /b 文件.txt') do (
- for /f %%a in (%%i) do (
- set "f=%%a"&set "s=!f:%%~nxa=!"
- if not defined !s! (
- set !s!=1
- MD "d!s:~1!" 2>nul
- )
- copy "!f!" "d!s:~1!%%~nxa"
- )
- )
- pause & exit/b
复制代码
D盘
作者: tanrr 时间: 2023-6-1 22:25
回复 2# xp3000
文件名、目录名或卷标语法不正确。
已复制 0 个文件。
没有复制文件,只复制了文件夹。
作者: xp3000 时间: 2023-6-1 23:21
回复 3# tanrr
不好意思没测试就发了,已经改了
作者: buyiyang 时间: 2023-6-2 09:37
- set "listf=1.txt"
- set "so=C:\1\s"
- set "de=C:\1\d"
- setlocal enabledelayedexpansion
- set "so=%so%\"&set "de=%de%\"
- set "so=%so:\\=\%"&set "de=%de:\\=\%"
- for /f "delims=" %%i in ('type %listf%') do (
- if /i "%%i" gtr "%so%" (
- set "de=%%i"
- set "de=!de:%so%=%de%!"
- for %%a in ("!de!") do xcopy "%%i" "%%~dpa"
- )
- )
- pause
复制代码
作者: tanrr 时间: 2023-6-2 10:32
回复 4# xp3000
可以复制文件了,但是当路径是文件夹而不是文件时,没有复制文件夹中的文件,而是复制整个文件夹并打包为一个以文件夹名命名无扩展名的文件。
作者: tanrr 时间: 2023-6-2 10:43
回复 4# xp3000
厉害,你这个代码基本能满足我的要求了,不用修改了,谢谢!后续如果有修改再请您帮忙。
作者: tanrr 时间: 2023-6-2 10:43
回复 5# buyiyang
部分复制错误。我用楼上的代码可以的,谢谢了!
作者: qixiaobin0715 时间: 2023-6-2 11:04
本帖最后由 qixiaobin0715 于 2023-6-2 14:59 编辑
- @echo off
- setlocal enabledelayedexpansion
- set "SourcePath=C:\1\s"
- set "DestPath=D:\abc"
- for /f "delims=" %%i in (1.txt) do (
- if not "%%~xi"=="" (
- set "str=%%~dpi"
- set "str=!str:%SourcePath%=%DestPath%!"
- if not exist "!str!" md "!str!"
- copy "%%i" "!str!\"
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |