for %%a in (*.en.srt) do (
echo %%~na
)
此脚本列出所有以.en.srt
结尾但没有扩展名 ( .srt
) 的文件。
如何获取不包含 .en 部分的子字符串?
我试图应用这个建议:
http://www.dostips.com/DtTipsStringOperations.php#Snippets.MidString
但我不能让这个工作%%a
和%%~na
变量。
显然我不了解批处理语法基础知识,所以现在我在这里寻求帮助;)
for %%a in (*.en.srt) do (
echo %%~na
)
此脚本列出所有以.en.srt
结尾但没有扩展名 ( .srt
) 的文件。
如何获取不包含 .en 部分的子字符串?
我试图应用这个建议:
http://www.dostips.com/DtTipsStringOperations.php#Snippets.MidString
但我不能让这个工作%%a
和%%~na
变量。
显然我不了解批处理语法基础知识,所以现在我在这里寻求帮助;)
只有.
名称中最后一个字符之后的字符才被视为扩展名的一部分。最后一个字符之前的所有字符.
(包括任何附加字符.
)都被视为基本名称的一部分。
您可以使用第二个 FOR 循环来剥离.en
for %%a in (*.en.srt) do for %%b in ("%%~na") do echo %%~nb
如果您有一个名为 的文件part1.part2.en.srt
,那么它将回显part1.part2
。如果您只想要第一个之前的字符.
,那么您可以使用 FOR /F 循环。
for %%a in (*.en.srt) do for /f "eol=. delims=." %%b in ("%%a") do echo %%b
但是,如果文件名为.en.srt
. 编辑:这可以通过一个简单的修改来解决。
for %%a in (*.en.srt) do for /f "eol=. delims=." %%b in ("\%%a") do echo(%%~nb
如果您知道一个事实,它将永远是 .en
setlocal EnableDelayedExpansion
for %%a in (*.en.srt) do (
set tempstr=%%~na
set tempstr=!tempstr:.en=!
echo !tempstr!
)
或者,如果您知道所有文件名都没有句点,则可以按句点分隔。
for /f "tokens=1 delims=." %%a in ('dir /B *.en.srt') do echo %%a
编辑
为了清楚起见更改了代码,也为了回答您的评论,这将起作用:
for %%a in (*.en.srt) do (
set tempstr=%%~na
set tempstr=!tempstr:.en=!
del !tempstr!
)