批量复制不同路径文件时出现「0 file copied」问题求助
批量复制不同路径文件时出现「0 file copied」问题求助
看起来你遇到了批量复制文件时的头疼问题——明明把要复制的文件路径都列在list.txt里,脚本也写了,却一直显示「0 file copied」,目标文件夹也空空如也。我来帮你排查几个最可能的原因,顺便给你修改后的测试脚本:
可能的问题点及解决方案
1. list.txt的编码不兼容
Windows批处理默认只认ANSI编码的文本文件,如果你的list.txt是UTF-8(尤其是带BOM头的),type命令读取时会把开头的隐藏BOM字符()加到第一行路径前,导致系统找不到文件,甚至影响后续所有行的读取。
- 解决方法:用记事本打开
list.txt,点击「文件」→「另存为」,在编码下拉框里选择「ANSI」,覆盖保存后再运行脚本试试。
2. 路径中的特殊字符/空格导致识别异常
你的文件名里有大量空格(比如ailes oiseau et cris oiseau indetermine...),虽然你在脚本里给%%a加了引号,但如果list.txt里的行末尾有多余的空格、换行符或者看不见的特殊字符,也会导致路径无效。
- 解决方法:检查
list.txt里的每一行路径,确保和实际文件路径完全一致(可以直接从文件资源管理器里复制路径到记事本),不要有多余的空格或换行。
3. 脚本缺少错误排查机制
你原来的脚本没有反馈具体哪个文件出了问题,很难定位根源。我给你修改一个带排查功能的脚本:
@echo off setlocal enabledelayedexpansion :: 先检查list.txt是否存在 if not exist "T:\audio\enregistrements\2023-03-mars\maroc_2023\list.txt" ( echo 错误:未找到list.txt文件! pause exit /b 1 ) echo 开始批量复制文件... echo -------------------------- for /f "tokens=* delims=" %%a in ('type "T:\audio\enregistrements\2023-03-mars\maroc_2023\list.txt"') do ( echo 正在处理:"%%a" :: 先判断文件是否存在 if exist "%%a" ( xcopy /hrkvy "%%a" "T:\audio\creation_sonore\projet maroc\complement\" echo 复制状态码:%errorlevel% (0=成功,1=文件未找到,2=用户中断) ) else ( echo ❌ 警告:该文件不存在!跳过此路径 ) echo -------------------------- ) echo 所有文件处理完成! pause endlocal
这个脚本会逐行输出正在处理的路径,并且告诉你文件是否存在、复制状态码,能帮你快速定位到底是哪一行路径出了问题。
4. 目标路径的格式问题
你的目标路径是T:\audio\creation_sonore\projet maroc\complement,建议在末尾加上斜杠\,变成T:\audio\creation_sonore\projet maroc\complement\,这样xcopy会明确知道目标是文件夹,避免因为路径识别问题导致复制失败。
额外小提示
- 可以先手动用xcopy复制其中一个带空格的文件,测试一下命令是否有效,比如:
如果手动复制也失败,那就是路径本身的问题;如果手动成功,那就是脚本读取xcopy /hrkvy "T:/audio/enregistrements/2023-03-mars/maroc_2023/msd6/20230324_0454_0627_ailes oiseau et cris oiseau indetermine cala iris sentier maroc_35.1287,-4.3661_MKH8020_AB_230324_014.WAV" "T:\audio\creation_sonore\projet maroc\complement\"list.txt的环节出了问题。
备注:内容来源于stack exchange,提问作者olivier8064
相关产品推荐
相关产品推荐

