【问题标题】:Replace Spaces and . in filename with Underscores替换空格和 .在带有下划线的文件名中
【发布时间】:2018-01-28 07:19:11
【问题描述】:

我按照https://stackoverflow.com/a/16129486/2000557 的示例修改了视频文件文件夹的脚本。

@echo off
Setlocal enabledelayedexpansion

Set "Pattern=."
Set "Replace=_"

For %%a in (*.avi) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)

For %%a in (*.mkv) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)

For %%a in (*.mp4) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)

Pause&Exit

谁能解释为什么这也将文件名中的最后一个点(即扩展名的一部分)替换为下划线。这感觉就像是给了我鱼,却没有教我如何钓鱼。这个脚本有效,但遗憾的是它也取代了最后一个时期。
我想使用脚本而不必打开隐藏扩展。

【问题讨论】:

标签: windows batch-file command-line


【解决方案1】:

你可以试试这个批处理脚本:

@echo off
Setlocal enabledelayedexpansion
Set "FileType=avi mp4 mkv"
Call :Search_Replace " " "." "!FileType!"
Call :Search_Replace "." "_" "!FileType!"
Timeout -1 & exit
::********************************************************
:Search_Replace <Pattern> <Replace> <FileType>
Set "Pattern=%~1"
Set "Replace=%~2"
@For %%# in (%~3) do (
    For %%a in (*.%%#) Do (
        Set "File=%%~na"
            ren "%%a" "!File:%Pattern%=%Replace%!%%~xa"
    )
)
Exit /b
::********************************************************

【讨论】:

    【解决方案2】:

    替换是整体的,不能被限制。

    解决方法很简单,只需为文件使用不带扩展名的名称并附加原始扩展名 - 这样只需要一个 for(对于每个替换)。

    @echo off & Setlocal EnableDelayedExpansion
    For %%A in ("*.*.avi" "*.*.mkv" "*.*.mp4") Do (
        Set "File=%%~nA"
        Ren "%%A" "!File:.=_!%%~xA" 2>NUL
    )
    
    For %%A in ("* *.avi" "* *.mkv" "* *.mp4") Do (
        Set "File=%%~nA"
        Ren "%%A" "!File: =_!%%~xA" 2>NUL
    )
    

    或者这个版本

    For %%A in (*.avi *.mkv *.mp4) Do (
        Set "File=%%~nA"
        Set "File=!File: =_!"
        Set "File=!File:.=_!"
        If "%%~nA" neq "!File!" Ren "%%A" "!File!%%~xA"
    )
    

    我不确定哪个更有效。

    【讨论】:

      猜你喜欢
      • 2014-11-27
      • 2018-11-25
      • 2020-05-27
      • 2014-11-30
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      相关资源
      最近更新 更多