我有一个父文件夹,下面有很多文件夹(电影)。每个文件夹都有1个文件(实际的电影)。
我想在批处理脚本上提出一些建议,我可以运行该文件夹将文件夹重命名为文件(电影),但不包括扩展名(.avi)
e.g。
在
Parent (folder)
Folder 1
Movie 1.avi
Folder 2
Movie 2.avi
在
Parent (folder)
Movie 1
Movie 1.avi
Movie 2
Movie 2.avi
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR /f "delims=" %%a IN (
'dir /b /ad "%sourcedir%\*" '
) DO (
FOR %%b IN ("%sourcedir%\%%a\*") DO IF /i "%%~na" NEQ "%%~nb" ECHO(REN "%sourcedir%\%%a" "%%~nb"
)
GOTO :EOF
为了测试目的,所需的REN命令仅为ECHO
。 在您确认命令正确后,将ECHO(REN
更改为REN
以实际重命名文件。
您需要将目录设置为sourcedir
。我设置了我的测试目录。
答案 1 :(得分:0)
以下批处理文件完成工作:
@echo off
if exist "%TEMP%\RenameFolders.bat" del "%TEMP%\RenameFolders.bat" >nul
cd /D "Complete\path\to\parent\folder"
for /R "Complete\path\to\parent\folder" %%I in (*.avi) do echo ren "%%~dpI" "%%~nI">>"%TEMP%\RenameFolders.bat"
if exist "%TEMP%\RenameFolders.bat" (
call "%TEMP%\RenameFolders.bat"
del "%TEMP%\RenameFolders.bat" >nul
)
“完成\ path \ to \ parent \ folder”必须在批处理文件中按实际父文件夹路径修改两次。
主要工作由命令FOR
完成。在命令提示符窗口for /?
中运行以获取有关选项
/R
...递归文件夹/文件扫描,%%~dpI
...文件的驱动器和路径,以及%%~nI
...没有路径和文件扩展名的文件名。对于每个* .avi文件,执行命令echo
以创建稍后用于将包含* .avi文件的文件夹重命名为* .avi文件名称的重命名命令。
无法直接在FOR
循环内重命名文件夹,因为当文件夹是正在运行的进程的当前工作目录时,无法重命名该文件夹。 <{1}}正在运行时,每个文件夹都是批处理的当前工作目录。
第三行中的命令FOR
只是确保将工作目录设置为要重命名的所有子文件夹的父文件夹,以避免重命名文件夹失败,因为批处理文件是从其中一个子文件夹启动的。
第二行只是确保临时文件的文件夹中没有文件CD
,例如在命令{{1}时单击 X 按钮终止此批处理文件一次}目前正在运行。
在递归处理命令RenameFolders.bat
之后,所有* .avi文件和一个带有命令FOR
的行被附加到文件FOR
以获取每个文件,这个创建的批处理文件被调用,现在重命名为文件夹。
最后临时创建的批处理文件将被删除,因为不再需要了。