代码之家  ›  专栏  ›  技术社区  ›  Blue Moose

在.bat中重命名文件名的某些部分

  •  0
  • Blue Moose  · 技术社区  · 4 年前

    我有一个文件夹,我所有的多通道3d渲染都放在那里。我不得不多次启动和停止渲染,这导致了名称的更改。

    姓名:

    Mask_Opening_Scene_Multipass_i1_0230.exr
    Mask_Opening_Scene_Multipass_i1_0231.exr
    Mask_Opening_Scene_Multipass_i1_0232.exr
    

    大部分文件都命名为:

    Mask_Opening_Scene_Multipass0230.exr
    

    所以我需要的是删除, _i1_

    以下是我所拥有的:

    @echo off
    
    set list="*_il_*"
    
    echo List of files
    echo.
    echo.
    
    for /r %%a in (%list%) do (
    
     set file=%%a
     echo "!file!" "!File:_i1_=!")
    
    )
    
    pause
    
    

    有人能帮帮我吗?

    0 回复  |  直到 4 年前
        1
  •  0
  •   Socialie    4 年前
    @echo off
    
    setlocal enabledelayedexpansion
    
    set "list=*_il_*"
    
    echo List of files
    echo.
    echo.
    
    for /f %%a in (%list%) do (
    
     set file=%%a
     echo "!file!" "%File:_i1_=%")
    
    pause
    

    @echo off
    
    setlocal enabledelayedexpansion
    
    set "list=*_il_*"
    
    echo List of files
    echo.
    echo.
    
    for /f %%a in (%list%) do (
    
     set file=%%a
     echo "!file!" "!File:_i1_=!")
    
    pause
    

    首先,您没有启用延迟扩展,因此您不能将变量与“!”一起使用。 然后,您使用/r代替/f,/r表示路径,/f表示文件,因此使用/r可能会捕获错误。 你不必特别说明是什么 _i1_ 你只能把 %file:_i1_=% ,将使名称无效,我认为延迟var(!)对于变量来说不是必需的。。。

    我希望我帮了你。