首页 > 解决方案 > 用 4 位数字顺序重命名文件 - .bat

问题描述

我正在寻找我的问题的解决方案,在我正在使用的脚本下方,我在这里找到了它,改变了它,它正在按照我想要的方式工作,但现在我想这样做,我我在为答案而苦苦挣扎。

例子:

<br>Open_university_MS221_0001.tif</br>
<br>Open_university_MS221_0001-2.tif</br>
<br>Open_university_MS221_0002.tif</br>
<br>Open_university_MS221_0002-2.tif</br>
<br>etc.</br>
<br>Open_university_MS221_0001.tif</br>
<br>Open_university_MS221_0002.tif</br>
<br>Open_university_MS221_0003.tif</br>
<br>Open_university_MS221_0004.tif</br>
<br>etc.</br>
@echo off
setlocal enableextensions enabledelayedexpansion
set /a count=1
for %%f in (*.tif) do (
    set FileName=%%~nf
    set FileName=000!count!
    set FileName=!FileName:~-4!
    for /F "tokens=1-3 delims=_+" %%g in ('dir /b /od *.tif') do ( 
        set prefix=%%g_%%h_%%i
    )
    set FileName=!prefix!_!Filename!%%~xf
    rename "%%f" "!FileName!"
    set /a count+=1
)

标签: windowsbatch-filecmd

解决方案


下面的工作解决方案,感谢 aschipfl 给我指路和 Stephan

@echo off

setlocal enableextensions enabledelayedexpansion

set "psCommand="(new-object -COM 'Shell.Application')^
.BrowseForFolder(0,'Please choose a folder.',0,0).self.path""
for /f "usebackq delims=" %%i in (`powershell %psCommand%`) do set "folder=%%i"

cd %folder%

set path=%folder:~1%
    for %%i in ("%path%") do (
        set "parent=%%~ni"
    )

set /a count=10000
    for /F "eol=| delims=" %%f in ('dir /B /A:-D-H-S /O:N "*.tif"') do (
        set /a count+=1
        set fileName=!parent!_!count:~-4!%%~xf
        rename "%%f" "!fileName!"
)

exit /b

推荐阅读