需要一个 BAT 文件来复制和重命名特定树中的所有文件

Need a BAT file to copy & rename all files in specific tree

我需要通过多层目录创建 运行s 的 .bat...复制某些包含以下后缀的文件:'.full.jpg' 以另存为 '.jpg'

我尝试过的:

copy /y "C:\Users\myname\Desktop\maindir\*.full.jpg" "C:\Users\myname\Desktop\maindir\*.jpg"

但是,我无法让它工作。

.bat 位于 'maindir' 目录中,运行 来自终端 (cmd)。

这是一个与我的场景非常接近的示例场景:

现有文件:

C:\Users\myname\Desktop\maindir\a\a\picture1.full.jpg
C:\Users\myname\Desktop\maindir\a\a\picture3.full.jpg
C:\Users\myname\Desktop\maindir\a\b\picturea.full.jpg
C:\Users\myname\Desktop\maindir\a\b\pic1.full.jpg
C:\Users\myname\Desktop\maindir\b\a\foto.full.jpg
C:\Users\myname\Desktop\maindir\b\a\photo.full.jpg
C:\Users\myname\Desktop\maindir\b\b\pic1.full.jpg
C:\Users\myname\Desktop\maindir\b\c\pi2.full.jpg

需要示例输出:

C:\Users\myname\Desktop\maindir\a\a\picture1.full.jpg
C:\Users\myname\Desktop\maindir\a\a\picture1.jpg
C:\Users\myname\Desktop\maindir\a\a\picture3.full.jpg
C:\Users\myname\Desktop\maindir\a\a\picture3.jpg
C:\Users\myname\Desktop\maindir\a\b\picturea.full.jpg
C:\Users\myname\Desktop\maindir\a\b\picturea.jpg
C:\Users\myname\Desktop\maindir\a\b\pic1.full.jpg
C:\Users\myname\Desktop\maindir\a\b\pic1.jpg
C:\Users\myname\Desktop\maindir\b\a\foto.full.jpg
C:\Users\myname\Desktop\maindir\b\a\foto.jpg
C:\Users\myname\Desktop\maindir\b\a\photo.full.jpg
C:\Users\myname\Desktop\maindir\b\a\photo.jpg
C:\Users\myname\Desktop\maindir\b\b\pic1.full.jpg
C:\Users\myname\Desktop\maindir\b\b\pic1.jpg
C:\Users\myname\Desktop\maindir\b\c\pi2.full.jpg
C:\Users\myname\Desktop\maindir\b\c\pi2.jpg

对于这方面的任何帮助,我将不胜感激,因为我还无法做到这一点。我将 运行 跨越一个目录结构,其中顶级目录将包含 15 多个目录,每个目录包含 20 多个目录,每个最低目录中有 100 多个文件。

谢谢。

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=u:\Users\myname\Desktop\maindir"
FOR /r "%sourcedir%" %%a IN (*.full.jpg) DO (
 FOR %%b IN ("%%~dpna") DO ECHO(COPY "%%a" "%%~dpnb.jpg"
)

GOTO :EOF

内部 for 仅检查 %%a 中完整文件名的驱动器路径名(即删除 .jpg)并提供驱动器路径名该名称(即删除 .full),您添加 .jpg 并完成工作。

您需要更改 sourcedir 的设置以适合您的情况。

所需的 COPY 命令仅 ECHO 用于测试目的。 确认命令正确后,将ECHO(COPY更改为COPY以实际复制文件。