我一直在处理一个批处理脚本(.bat),以便将文件名更改为相同的文件夹名(3级),但没有成功。我只能把它重命名为1级。在多个文件夹中有多个文件。
任何帮助都将不胜感激。
发布于 2013-09-30 19:31:04
我不完全理解你当前代码的意图。但下面将根据文件夹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"
)
)发布于 2013-09-30 20:00:19
你可以试试这个:
@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"https://stackoverflow.com/questions/19101840
复制相似问题