2013-09-30 126 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,因爲它解釋更好的細節我的問題。謝謝。 –

相關問題