【问题标题】:How to swap file names that contain a hyphen (-) in a batch file? abc-def to def-abc如何在批处理文件中交换包含连字符 (-) 的文件名? abc-def 到 def-abc
【发布时间】:2020-09-28 11:10:31
【问题描述】:

我使用 ffmpeg 批量反转视频文件。

我现在想做的是:

  1. 仅反转名称中带有“-”的文件。
  2. 通过将“-”之前的部分与之后的部分交换来重命名这些文件。就像“abc-def”变成了“def-abc”。

有什么想法吗?

谢谢!

更新:

我现在尝试了以下方法来查找文件。出于某种原因,无论使用哪个名称,它总是会成功:

for %%a in ("videos/*.mp4") do (
    echo %%a|find "-" >nul
    if %errorlevel%==0 (
        echo found
    )
)

【问题讨论】:

    标签: batch-file filenames


    【解决方案1】:

    如果您的文件名不包含感叹号,(!),那么这样的方法可能适合您:

    @Echo Off
    SetLocal EnableExtensions DisableDelayedExpansion
    For /F "Delims=" %%G In (
        '"(Set PATHEXT=) & "%SystemRoot%\System32\where.exe" /F "Videos":"*-*.mp4" 2> NUL"'
    ) Do Call :Sub %%G
    GoTo :EOF
    
    :Sub
    Set "FN=%~n1"
    SetLocal EnableDelayedExpansion
    Set "RS="
    Set "FS=%FN:-=" & Set "RS=-!FS!!RS!" & Set "FS=%"
    EndLocal & Ren %1 "%FS%%RS%%~x1"
    Exit /B
    

    请注意,没有检查有问题的结果文件名,因此如果您有 Videos\foo - bar.mp4,则结果重命名将为 Videos\ bar-foo .mp4,并且带有前导或尾随空格的文件名可能会导致您将来出现问题。 em>

    【讨论】:

    • 不确定你在这里到底在做什么,但它有效;)我猜在第一部分你用“-”搜索所有 mp4,然后你去第二部分为每个文件重命名他们。仍然必须将它与我的 ffmpeg 反向结合起来,但这应该不会太难。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 2017-09-09
    • 2013-06-05
    • 2010-12-05
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多