Batch file 如何交换批处理文件中包含连字符(-)的文件名?abc def到def abc

Batch file 如何交换批处理文件中包含连字符(-)的文件名?abc def到def abc,batch-file,filenames,Batch File,Filenames,我使用ffmpeg批量反转视频文件 我现在想做的是: 仅反转名称中带“-”的文件 通过将“-”之前的零件替换为“-”之后的零件来重命名这些文件。像“abc def”变成“def abc” 有什么想法吗 谢谢 更新: 我现在尝试以下方法来查找文件。出于某种原因,无论使用哪个名称,它都会成功: for %%a in ("videos/*.mp4") do ( echo %%a|find "-" >nul if %errorlevel%==

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

我现在想做的是:

  • 仅反转名称中带“-”的文件
  • 通过将“-”之前的零件替换为“-”之后的零件来重命名这些文件。像“abc def”变成“def abc”
  • 有什么想法吗

    谢谢

    更新:

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

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

    如果您的文件名不包含感叹号(
    ),则类似的内容可能适用于您:

    @Echo关闭
    SetLocal EnableExtensions DisableDelayedExpansion
    对于/F“Delims=”%%G In(
    ““(设置路径=)&”%SystemRoot%\System32\where.exe“/F”视频“*-*.mp4”2>NUL“
    )Do Call:Sub%%G
    后藤:EOF
    :Sub
    设置“FN=%~n1”
    SetLocal EnableDelayedExpansion
    设置“RS=”
    设置“FS=%FN:-=”&设置“RS=-!FS!!RS!”&设置“FS=%”
    EndLocal和Ren%1“%FS%%RS%%~x1”
    退出/B
    

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

    还不确定您在这里到底做了什么,但它可以工作;)我猜在第一部分中,你用“-”搜索所有MP4,然后在第二部分中对每一个MP4进行重命名。仍然必须结合我的ffmpeg反向,但这应该不会太难。谢谢