无忧启动论坛

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2024-9-4 11:05:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 2012zhiwen 于 2024-9-4 11:10 编辑

有一个txt文件,如下如





如何复制txt内容的指定文件到新目录,并且保存目录结构。
例如:
需要复制“C:\Windows\SysWOW64\crypt32.dll”到“D:\newfolder\Windows\SysWOW64\crypt32.dll


请问用批处理如何写呢?感谢感谢!!!


2#
发表于 2024-9-4 11:50:20 | 只看该作者
XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝
回复

使用道具 举报

3#
发表于 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
回复

使用道具 举报

4#
 楼主| 发表于 2024-9-4 14:31:29 | 只看该作者

感谢,成功了一半,这个批处理把要复制的文件生成了文件夹,如下图

回复

使用道具 举报

5#
发表于 2024-9-4 15:15:13 | 只看该作者
回复

使用道具 举报

6#
发表于 2024-9-5 08:35:03 | 只看该作者
人呢?问题解决没有也不吱一声。

点评

谢谢,我去工地搬砖了。我先看看三楼的用法,你这个还没试,一步一步来。  详情 回复 发表于 2024-9-5 11:15
回复

使用道具 举报

7#
发表于 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
回复

使用道具 举报

8#
发表于 2024-9-5 09:47:24 | 只看该作者
可以先去cmd里练习,先进入目标文件夹
for /f %f in (l.txt) do md %~pf&copy %f %~pf

点评

感谢提供帮助,  详情 回复 发表于 2024-9-5 15:17
回复

使用道具 举报

9#
 楼主| 发表于 2024-9-5 11:15:43 | 只看该作者
plutoshen 发表于 2024-9-5 08:35
人呢?问题解决没有也不吱一声。

谢谢,我去工地搬砖了。我先看看三楼的用法,你这个还没试,一步一步来。

点评

哪个简单直观,你自己看看,没必要舍近求远。  详情 回复 发表于 2024-9-5 11:44
回复

使用道具 举报

10#
 楼主| 发表于 2024-9-5 11:17:16 | 只看该作者

谢谢,现在还在工地,晚上试下。
回复

使用道具 举报

11#
发表于 2024-9-5 11:44:24 | 只看该作者
2012zhiwen 发表于 2024-9-5 11:15
谢谢,我去工地搬砖了。我先看看三楼的用法,你这个还没试,一步一步来。

哪个简单直观,你自己看看,没必要舍近求远。
回复

使用道具 举报

12#
发表于 2024-9-5 14:23:27 | 只看该作者
把要复制的名单命名为1.txt
把代码保存为bat文件,跟1.txt放一块,运行即可。
  1. @echo off
  2. set "dest=D:\newfolder"
  3. for /f "delims=" %%i in (1.txt) do (xcopy "%%i" "%dest%%%~pi")
  4. echo 文件复制完成。
  5. pause
复制代码


点评

测试可以。谢谢  详情 回复 发表于 2024-9-5 20:53
今晚回去试下。  详情 回复 发表于 2024-9-5 15:18
回复

使用道具 举报

13#
 楼主| 发表于 2024-9-5 15:17:32 | 只看该作者
szwp 发表于 2024-9-5 09:47
可以先去cmd里练习,先进入目标文件夹
for /f %f in (l.txt) do md %~pf&copy %f %~pf

感谢提供帮助,

点评

%~pf前要加路径可以是.  详情 回复 发表于 2024-9-5 15:20
回复

使用道具 举报

14#
 楼主| 发表于 2024-9-5 15:18:44 | 只看该作者
ppll2030 发表于 2024-9-5 14:23
把要复制的名单命名为1.txt
把代码保存为bat文件,跟1.txt放一块,运行即可。

谢谢,今晚回去试下。
回复

使用道具 举报

15#
发表于 2024-9-5 15:20:32 | 只看该作者

%~pf前要加路径可以是.
回复

使用道具 举报

16#
 楼主| 发表于 2024-9-5 20:53:00 | 只看该作者

测试可以。谢谢。
回复

使用道具 举报

17#
 楼主| 发表于 2024-9-5 20:53:54 | 只看该作者
ppll2030 发表于 2024-9-5 14:23
把要复制的名单命名为1.txt
把代码保存为bat文件,跟1.txt放一块,运行即可。

测试可以。谢谢
回复

使用道具 举报

18#
发表于 2024-9-5 21:11:12 | 只看该作者
学习了
回复

使用道具 举报

19#
发表于 2024-9-6 20:47:17 | 只看该作者
论坛中找到的,我一直在用,还不错。把txt名称更名为RNDIS.txt,然后拖到下面批处理文件(设为:copyfiles.bat)上即可。

@echo off
pushd %~dp0
if not exist RNDIS mkdir RNDIS
(
    for /f "delims=" %%a in (RNDIS.txt) do (
        if exist "%%~fa\" (
            xcopy "%%~fa\*.*" "RNDIS%%~pnxa" /s /y
        ) else (
            xcopy "%%~fa" "RNDIS%%~pa" /s /y
        )
    )
)>RNDIS.log
pause
回复

使用道具 举报

20#
发表于 前天 07:47 | 只看该作者
学习
回复

使用道具 举报

21#
发表于 昨天 20:10 | 只看该作者
学习了
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-15 14:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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