我需要将通用名称文件合并到它们自己的子目录中

我需要将通用名称文件合并到它们自己的子目录中

对于我拍摄的每一个镜头,我都会生成 3 个具有相同名称和不同扩展名的文件:

BC_0100_210117.mov
BC_0100_210117.xls
BC_0100_210117.mp4

如果我导出 100 张照片,最终会得到 300 个文件。所有这些文件都导出到一个保存目录中

我希望能够将所有通用名称文件合并到它们自己的子目录中,并将该目录命名为与文件基名相同的名称,这样我最终会得到 100 个子目录,每个子目录都有 3 个匹配的文件。

答案1

for %i in (*.mov)do xcopy /I /L ".\%~ni.*" ".\%~ni\" && echo\del /q /f ".\%~ni.*"
                             ⇅                          ⇅
                             /L                         echo\                                               
for %i in (*.mov)do xcopy /I    ".\%~ni.*" ".\%~ni\" &&      del /q /f ".\%~ni.*"

1.使用For循环,您可以列出一个扩展中的所有文件,并使用它来选择具有相同名称的文件:

for %%i in (*.mov)do...

2.xcopy可以通过将当前变量扩展%~iame()在循环中列出的文件,并将所有具有相同名称的文件复制到同一个文件夹%~NiName.*Name.*

...)do xcopy /i '.\%~ni.*" .\%~ni\

3.使用标志/I/Lxcopy命令:

  /I           If destination does not exist and copying more than one file,
               assumes that destination must be a directory.

  /L           Displays files that would be copied.

4.使用&&操作符将执行你的del仅当命令xcopy(以前的)returned 0(成功地)

xcopy... && del /q /f ".\%~ni.*"

5.xcopy测试此代码并检查来自和命令的输出echo\ del...,如果您认为这没问题,只需删除来自/Lxcopy命令echo即可删除您的文件......

for %i in (*.mov)do xcopy /I /L ".\%~ni.*" ".\%~ni\" && echo\del /q /f ".\%~ni.*"
                             ⇅                          ⇅
for %i in (*.mov)do xcopy /I /L ".\%~ni.*" ".\%~ni\" && echo\del /q /f ".\%~ni.*"
                             ⇅                          ⇅
for %i in (*.mov)do xcopy /I    ".\%~ni.*" ".\%~ni\" &&      del /q /f ".\%~ni.*"

6对于批处理文件,使用:

@echo off 

cd /d "%~dp0" 
for %%i in (*.mov)do xcopy /I /L ".\%%~ni.*" ".\%%~ni\" && echo\del /q /f ".\%%~ni.*"

其他资源:

相关内容