如果在Rename filename using another files name from the same folder
找到非常有用的批处理脚本有效:
@echo off
setlocal enabledelayedexpansion
:: This assumes there is only one avi file in the folder
for /F %%A in ('dir /b *.jpg') do (
set basename=%%~nA
ren *.avi !basename!.avi
)
但是我如何添加一个额外的FOR循环来为每个子文件夹执行此操作。我有许多子文件夹需要重命名。另一个问题是,在重命名后,只采用文件名的第一个名称。在文件名中的空格之后,脚本会剪切文件名。
结构如下:
文件夹 ------------子文件夹 --------------------- file.jpg --------------------- notagoodfilename.avi
好的Batchscript之后:
文件夹 ------------子文件夹 --------------------- file.jpg --------------------- file.avi
此脚本应适用于每个子文件夹。文件夹 - >子文件夹,子文件夹1 ...
感谢您的帮助!
答案 0 :(得分:0)
您之前的脚本可以简化为以下单行:
for %%a in (*.jpg) do ren *.avi %%~na.*
要在当前文件夹的所有子文件夹中执行此操作:
for /r %%a in (*.jpg) do ren %%~dpa*.avi %%~na.*
更新: 根据对此答案的评论,这是一个更好的版本:
for /r "C:\Path\To\Top\Folder" %%a in (*.jpg) do ren "%%~dpa*.avi" "%%~na.*"