Batch file DOS批处理-重命名子目录中的所有文件,使其具有子目录名称前缀

Batch file DOS批处理-重命名子目录中的所有文件,使其具有子目录名称前缀,batch-file,dos,rename,subdirectory,Batch File,Dos,Rename,Subdirectory,我基本上有这样的设置: C:\Upload\A C:\Upload\B C:\Upload\C C:\Upload\D C:\Upload\E 其中A,B,C,D,E总是不同的(产品ID),并且总是不同的金额(不总是5个子目录)。每个子目录包含24个编号为01-24的图像 我需要创建一个批处理文件,查看上载目录,获取每个子目录的名称,并将该名称附加到该子目录中包含的每个图像文件的开头 因此,C:\Upload\A\01.jpg将成为C:\Upload\A\A-O1.jpg,以及每个子目录中的其

我基本上有这样的设置:

C:\Upload\A
C:\Upload\B
C:\Upload\C
C:\Upload\D
C:\Upload\E
其中
A
B
C
D
E
总是不同的(产品ID),并且总是不同的金额(不总是5个子目录)。每个子目录包含24个编号为01-24的图像

我需要创建一个批处理文件,查看上载目录,获取每个子目录的名称,并将该名称附加到该子目录中包含的每个图像文件的开头

因此,
C:\Upload\A\01.jpg
将成为
C:\Upload\A\A-O1.jpg
,以及每个子目录中的其他23个图像

批处理文件需要对上载目录中的每个子目录执行相同的操作

对我来说,这听起来非常复杂,在我开始尝试写这篇文章的地方,我还没有任何值得在这篇文章中分享的东西


任何帮助都将不胜感激。

这将重命名“C:\Upload”子目录中的文件

我添加了额外的代码以防止对同一文件重命名两次。您应该能够多次安全地运行脚本

如果您想递归地重命名每个子目录树中的文件,那么需要对代码稍加修改

@echo off
for /d /r "C:\Utils" %%D in (*) do (
  for /f "eol=: delims=" %%F in ('dir /b /a-d "%%D" ^| findstr /vbic:"%%~nD-"') do (
    ren "%%D\%%F" "%%~nD-%%F"
  )
)

这将重命名“C:\Upload”子目录中的文件

我添加了额外的代码以防止对同一文件重命名两次。您应该能够多次安全地运行脚本

如果您想递归地重命名每个子目录树中的文件,那么需要对代码稍加修改

@echo off
for /d /r "C:\Utils" %%D in (*) do (
  for /f "eol=: delims=" %%F in ('dir /b /a-d "%%D" ^| findstr /vbic:"%%~nD-"') do (
    ren "%%D\%%F" "%%~nD-%%F"
  )
)

你真的在用DOS吗?(我对此表示怀疑)或者Windows的某个版本?你真的在使用DOS吗?(我怀疑)或者是某个版本的Windows?谢谢…这和我需要的完全一样!能用PHP做同样的事情吗?@WillIrvine-对不起,我对PHP一无所知。如果您的原始问题得到满意的回答,请不要忘记接受答案。谢谢…这正是我所需要的!能用PHP做同样的事情吗?@WillIrvine-对不起,我对PHP一无所知。如果你最初的问题得到了满意的回答,别忘了接受答案。