1
A
回答
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文件。代码已经过测试,并在我手中工作。只要适当地设置root
和files
值。
@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"
)
)
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,因为它解释更好的细节我的问题。谢谢。 –
相关问题
- 1. linux如何将文件名更改为其文件夹的名称?
- 2. 将文件夹的名称指定为文件的名称
- 3. 更改目录下的文件夹名称和文件名
- 4. 更改文件夹名称,matlab
- 5. Cakephp更改项目文件夹名称
- 6. 更改public_html文件夹的名称
- 7. tomcat webapp文件夹名称已更改
- 8. 更改silverstripes'mysite'文件夹的名称
- 9. 将域名/文件夹/ file.pdf改写为域名/文件夹
- 10. 当文件放入文件夹时更改文件名称
- 11. 将文件夹内的文件批量重命名为父文件夹名称
- 12. VBS将文件重命名为与文件夹名称相同
- 13. 将文件重命名为其文件夹名称
- 14. 如何将文件夹名称更改为Ubuntu根目录
- 15. 我可以将App_Start文件夹的名称更改为AppStart吗?
- 16. 更改文件夹名称,以强大的名称要求
- 17. 文件夹名称文件夹里面
- 18. 更改嵌套文件夹中文件的名称
- 19. 蝙蝠文件更改文件夹名称
- 20. 在每月文件夹名称(每周更改)中打开每月文件夹名称内的所有文件
- 21. 基本MVC路由:/文件夹名称/文件夹名称/控制器名称
- 22. 将配对文件的名称更改为随机名
- 23. 使用mozilla thunderbird扩展名更改文件夹的名称
- 24. 重命名项目文件夹而不更改项目名称?
- 25. 将文件夹名称添加到文件名与SQL Server
- 26. 用Git更改文件夹名称,然后提交更改?
- 27. 钻入驱动器并更改文件夹名称和文档名称
- 28. 在Visual Studio中更改命名空间/文件系统文件夹名称
- 29. Linux脚本更改文件名,文件夹名称和内部代码
- 30. 将子文件夹中存在的同名文件重命名为包含子文件夹名称
dbenham,感谢回答。好的,我目前的问题是这样的。我正在使用xProtect视频软件来捕捉多个摄像头的训练视频。培训完成后,我会将所有选定的视频从xProtect导出到H:\ Techs \ Exported Videos \ Scenario \。该软件会将视频(avi格式)导出到指定位置,但它会默认创建“文件名\媒体播放器格式\视频名称\ VideoClip.avi”(即“1-CAS IED \媒体播放器格式\ A8 West \ abc .AVI“)。它会为所有视频执行此操作。 –
我需要的批处理文件是将所有.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“等) –
@ USMC-3537 - 我已经更新了我的答案以解决您的问题。 – dbenham