将具有相同名称但扩展名不同的文件列表复制到新目录

时间:2018-08-13 12:49:52

标签: batch-file

使用DSLR相机时,我将JPG存储在一个SD卡上,并将RAW文件存储在第二个SD卡上。目前,我正在将所有.JPG文件从一个SD卡复制到PC上的文件夹中,对其进行排序,然后删除不需要的文件。

第二张装有RAW文件的SD卡具有与JPG相同的文件名,但扩展名为.NEF。

我想在PC上创建剩余JPG文件的列表,然后仅将匹配的.NEF文件复制到PC。

我想创建一个批处理文件以使其自动化。

我可以通过使用

在目录中创建文件的简单列表
dir /b /a-d > filelist.txt

但这会创建一个包含.JPG扩展名的文件名列表,大概我只需要不带扩展名的文件名,因此我可以使用该列表从另一个SD卡复制匹配的.NEF文件。

我尝试使用以下内容复制文件,但无法正常工作。

@echo off
set src_folder=J:\DCIM\101D7100
set dst_folder=D:\Photos\1\RAW
for /f "tokens=*" %%i in (filelist.txt) DO (
    xcopy /S/E "%src_folder%\%%i" "%dst_folder%"
)

谢谢您的建议。

1 个答案:

答案 0 :(得分:3)

通过使用%%~ni来代替扩展名。假设您希望.NEF文件的所有.JPG文件都已经在目录中,而不是将其处理为文件,然后从文件中读取,直接进行处理即可。例如,假设您以前用于dir /b /a-d > filelist.txt的目录是D:\JPEGs,然后只需执行以下操作:

这只是获取JPG文件的名称并去除扩展名,然后我们复制该名称并添加.NEF扩展名。

@echo off
set "src_folder=J:\DCIM\101D7100"
set "dst_folder=D:\Photos\1\RAW"
for %%i in ("D:\JPEGS\*.jpg") do (
    xcopy /S/E "%src_folder%\%%~ni.NEF" "%dst_folder%"
)

此外,请始终设置一个变量,在变量名之前和路径后使用双引号,以确保键入时没有隐藏的空格。