我试图将一个文本文件中列出的数千个图像文件从多个文件夹复制到一个文件夹。如果所有文件名都不同,我的脚本就可以工作。如何让它重命名重复项或重命名所有项?两者都可以,因为名称并不重要。
示例列表
G:\research_data\an\an01\DCIM\100MSDCF\DSC04450.JPG
G:\research_data\an\an01\DCIM\100MSDCF\DSC04076.JPG
G:\research_data\an\an01\DCIM\100MSDCF\DSC03141.JPG
G:\research_data\an\an01\DCIM\120MSDCF\DSC04840.JPG
G:\research_data\an\an02\DCIM\100MSDCF\DSC04450.JPG
G:\research_data\an\an02\DCIM\112MSDCF\DSC04076.JPG
G:\research_data\an\an03\DCIM\102MSDCF\DSC03141.JPG
G:\research_data\an\an03\DCIM\105MSDCF\DSC04450.JPG
G:\research_data\an\an03\DCIM\106MSDCF\DSC04076.JPG
代码:
@echo off
for /f "tokens=* delims=" %%a in ('type "L:\an_2017\image_list.txt"') do xcopy /hrkvy "%%a" "L:\an_2017"
pause
我看到你遇到的问题。看起来您正在尝试从各种目录传输图像,其中一些目录包含相同的文件名。如果您希望保留这两个文件,您可以使用一条FOR
语句来读取您的文本文件并将手头的文件重命名为DSC{Count}
from 1+
.
使用enabledelayedexpansion
我们可以set /a count += 1
用来计算一个数字并重命名%%a
为一个数字。请记住,我正在使用%%~xa
从文本文件中获取每个文件的扩展名。更多信息:参数扩展
该脚本波纹管将读取的所有文件位置image_list.txt文件,将每个项目复制到的目标目录中的一个新的名称DSC1-DSCinfinity基于有多少项目在image_list.txt。这避免了文本文件中重复名称的任何问题。
@ECHO OFF
@setlocal enableextensions enabledelayedexpansion
rem configure directories
set "source=L:\an_2017\image_list.txt"
set "target=L:\an_2017"
rem rename files to DSC{Count}
set /a count = 1
for /f "tokens=* delims=" %%a in ('type "%source%"') do (
copy "%%a" "%target%\DSC!count!%%~xa"
set /a count += 1
)
goto :EOF
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句