无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4821|回复: 22
打印 上一主题 下一主题

[求助] 如何复制txt内容的指定文件到新目录,并且保存目录结构?

[复制链接]
1#
发表于 2024-9-4 11:54:54 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. :: 设置源目录和目标目录
  4. set "sourceRoot=C:"
  5. set "targetRoot=D:\newfolder"

  6. :: 设置包含文件路径的txt文件
  7. set "listFile=filelist.txt"

  8. :: 检查txt文件是否存在
  9. if not exist "%listFile%" (
  10.     echo 错误:文件列表 %listFile% 不存在。
  11.     goto :eof
  12. )

  13. :: 读取txt文件并复制文件
  14. for /f "usebackq delims=" %%a in ("%listFile%") do (
  15.     set "sourcePath=%%a"
  16.     set "targetPath=!sourcePath:%sourceRoot%=%targetRoot%!"
  17.    
  18.     :: 创建目标目录(如果不存在)
  19.     if not exist "!targetPath:~0,-1!" mkdir "!targetPath:~0,-1!"
  20.    
  21.     :: 复制文件
  22.     echo 正在复制 "!sourcePath!" 到 "!targetPath!"
  23.     copy "!sourcePath!" "!targetPath!" /Y
  24. )

  25. echo 复制完成。

  26. endlocal
复制代码

点评

太麻烦了,用rsync一行命令就解决。 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=442250  发表于 2024-9-4 15:18
感谢,成功了一半,这个批处理把要复制的文件生成了文件夹,如下图 [attachimg]546675[/attachimg]  详情 回复 发表于 2024-9-4 14:31
回复

使用道具 举报

2#
发表于 2024-9-5 09:04:18 | 显示全部楼层
2012zhiwen 发表于 2024-9-4 14:31
感谢,成功了一半,这个批处理把要复制的文件生成了文件夹,如下图
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. :: 设置源目录和目标目录
  4. set "sourceRoot=C:"
  5. set "targetRoot=D:\newfolder"

  6. :: 设置包含文件路径的txt文件
  7. set "listFile=filelist.txt"

  8. :: 检查txt文件是否存在
  9. if not exist "%listFile%" (
  10.     echo 错误:文件列表 %listFile% 不存在。
  11.     goto :eof
  12. )

  13. :: 读取txt文件并复制文件
  14. for /f "usebackq delims=" %%a in ("%listFile%") do (
  15.     set "sourcePath=%%a"
  16.     set "targetPath=!sourcePath:%sourceRoot%=%targetRoot%!"
  17.    
  18.     :: 创建目标目录(如果不存在)
  19.     for %%I in ("!targetPath!") do set "targetDir=%%~dpI"
  20.     if not exist "!targetDir!" mkdir "!targetDir!"
  21.    
  22.     :: 复制文件
  23.     if exist "!sourcePath!" (
  24.         echo 正在复制 "!sourcePath!" 到 "!targetPath!"
  25.         copy "!sourcePath!" "!targetPath!" /Y
  26.     ) else (
  27.         echo 警告:源文件 "!sourcePath!" 不存在。
  28.     )
  29. )

  30. echo 复制完成。

  31. endlocal
复制代码

点评

测试可以。谢谢。  详情 回复 发表于 2024-9-5 20:53
谢谢,现在还在工地,晚上试下。  详情 回复 发表于 2024-9-5 11:17
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-11 20:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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