Batch file 如何交换批处理文件中包含连字符(-)的文件名?abc def到def abc
我使用ffmpeg批量反转视频文件 我现在想做的是: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%==
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反向,但这应该不会太难。谢谢