Board logo

标题: [文本处理] 批处理命令xcopy批量复制部分文件不成功 [打印本页]

作者: huangkun2008    时间: 2023-10-10 11:55     标题: 批处理命令xcopy批量复制部分文件不成功

请教一下各位老大,我做了一个指定复制的批处理命令
通过XCOPY时会有部分文件复制不成功提示【找不到文件 -*****】
如何把这部分不成功的记录保存成TXT或者EXCEL文件呢?
或者保留所有复制过程也行
  1. Xcopy 订单\张三报告.pdf 订单\ /Q
  2. Xcopy 订单\李四报告.pdf 订单\ /Q
  3. Xcopy 订单\刘三报告.pdf 订单\ /Q
复制代码

作者: Batcher    时间: 2023-10-10 12:05

回复 1# huangkun2008


找不到文件是因为文件真的不存在?还是命令里面写错了路径?
那些报错的文件有什么特征吗?比如隐藏属性、系统属性、快捷方式等
作者: 77七    时间: 2023-10-10 13:14

没看明白你的代码,请直接描述下需要如何复制
作者: huangkun2008    时间: 2023-10-11 08:31

其实作用是每次需要复制大量的文档出来打印,但是不是所有需要打印,只需要我指定的这些,但是有部分文档系统可能未生成,所以我通过EXCEL表+批处理把需要的打印的这部分文档放到另一个文件夹批量打印
所以这里目前就碰到一个问题,批处理复制的时候需要生成一个记录比如哪些未复制成功的,以方便核对是否名称有误
作者: Batcher    时间: 2023-10-11 12:06

回复 4# huangkun2008


假设当前目录下存在文件夹:
订单
打印

假设当前目录下存在文件:
test.bat
列表.txt

列表.txt 里面是需要打印的文件名,每行一个,例如:
张三报告.pdf
李四报告.pdf
刘三报告.pdf

test.bat 里面是以下代码:
  1. @echo off
  2. cd /d "%~dp0"
  3. REM 存放大量文档的文件夹
  4. set "OldFolder=订单"
  5. REM 需要打印的文件复制到哪个文件夹
  6. set "NewFolder=打印"
  7. REM 需要复制的文件名列表
  8. set "InFile=列表.txt"
  9. REM 记录哪些未复制成功的
  10. set "OutFile=结果.txt"
  11. >"%OutFile%" type nul
  12. for /f "delims=" %%i in ('type "%InFile%"') do (
  13.     if exist "%OldFolder%\%%i" (
  14.         xcopy /q /y "%OldFolder%\%%i" "%NewFolder%"
  15.     ) else (
  16.         >>"%OutFile%" echo,%%i
  17.     )
  18. )
复制代码
请参考Q-04和Q-05把bat文件和txt文件都保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2