2013-09-30 125 views
1

我一直在研究批处理脚本(.bat),将文件名更改为相同的文件夹名称3级,但没有运气。我只能让它重命名1级。在多个文件夹中有多个文件。将文件名更改为文件夹名称

任何帮助将不胜感激。

回答

1

我不完全理解你当前的代码的意图。但是,以下将基于文件夹3级别重命名给定的文件。请注意,您只能使用此策略重命名每个文件夹具有给定扩展名的文件。

@echo off 
setlocal 
set "file=H:\Techs\Exported Videos\Scenario\1-CAS IED\Media player format\A8 West\abc.avi" 
for %%A in ("%file%") do for %%B in ("%%~A\..\..\..") do ren "%%~A" "%%~nxB%%~xA" 

请注意,我包含文件夹名称的扩展名,因为文件夹名称可以包含点。

编辑

基于OP的意见,我相信下面将会修改所有相关的.avi文件。代码已经过测试,并在我手中工作。只要适当地设置rootfiles值。

@echo off 
setlocal 
set "root=H:\Techs\Exported Videos\Scenario" 
set "files=*.avi" 

for %%A in ("%root%\.") do set "root=%%~fA" 
for /f "delims=" %%A in ('dir /b /s /a-d "%root%\%files%"') do (
    for %%B in ("%%~A\..\..\..") do (
    if /i "%%~dpB" equ "%root%\" ren "%%~A" "%%~nxB%%~xA" 
) 
) 
+0

dbenham,感谢回答。好的,我目前的问题是这样的。我正在使用xProtect视频软件来捕捉多个摄像头的训练视频。培训完成后,我会将所有选定的视频从xProtect导出到H:\ Techs \ Exported Videos \ Scenario \。该软件会将视频(avi格式)导出到指定位置,但它会默认创建“文件名\媒体播放器格式\视频名称\ VideoClip.avi”(即“1-CAS IED \媒体播放器格式\ A8 West \ abc .AVI“)。它会为所有视频执行此操作。 –

+0

我需要的批处理文件是将所有.avi文件重命名为导出期间给出的原始名称(I.e.1-CAS)。所以换句话说,脚本会上传3个文件夹(从.avi文件所在的位置),并为.avi文件指定文件夹的名称。例如:“H:\ Techs \ Exported Videos \ Scenario \ 1-CAS \ Media player format \ A8 West \ abc.avi”改为“H:\ Techs \ Exported Videos \ Scenario \ 1-CAS \ Media player format \ A8 West \ 1-CAS.avi“或”H:\ Techs \ Exported Videos \ Scenario \ 2-IED \ Media player format \ B1 East \ abc.avi“改为”H:\ Techs \ Exported Videos \ Scenario \ 2-IED \媒体播放器格式\ B1 East \ 2-IED.avi“等) –

+0

@ USMC-3537 - 我已经更新了我的答案以解决您的问题。 – dbenham

1

你可以试试这个:

@echo off &setlocal 
set /a PathLevel=3 
for %%a in (
    "H:\Techs\Exported Videos\Scenario\1-CAS IED\Media player format\A8 West\1-CAS IED.avi" 
    "H:\Techs\Exported Videos\Scenario\2-SAF\Media player format\A8 PTZ\2-SAF.avi" 
    ) do (
    call:doit "%%~a" 
) 
goto:eof 

:doit 
set "fname=%~1" 
set /a cnt=0 
for %%a in ("%fname:\=","%") do set /a cnt+=1 
set /a cnt-=PathLevel 
for %%a in ("%fname:\=","%") do (
    set /a cnt-=1 
    setlocal enabledelayedexpansion 
    if !cnt! equ 0 (
     endlocal 
     set "nname=%%~a" 
    ) else endlocal 
) 
echo ren "%fname%" "%nname%%~x1" 
goto:eof 

输出为:

ren "H:\Techs\Exported Videos\Scenario\1-CAS IED\Media player format\A8 West\1-CAS IED.avi" "1-CAS IED.avi" 
ren "H:\Techs\Exported Videos\Scenario\2-SAF\Media player format\A8 PTZ\2-SAF.avi" "2-SAF.avi" 
+0

不错的脚本,但请阅读我的评论下面的dbenham,因为它解释更好的细节我的问题。谢谢。 –

相关问题