2013-02-09 74 views

回答

2

只有字符後的名稱中最後.被認爲成爲擴展的一部分。最後的.(包括任何其他.)之前的所有字符被認爲是基本名稱的一部分。

您可以使用第二個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 
+0

這是完成我一直在努力完成的完美解決方案!這有點棘手;) – Heps 2013-02-09 22:11:05

0

如果你知道一個事實,它總是會.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! 
) 
+0

考慮第一個片段如何使用tempstr變量除了echo以外的其他命令?例如del「c:/!tempstr!」或「c:/%tempstr」不適用於我...我試圖完成的是刪除所有字幕文件,當相應的電影丟失(但它們不包含名稱內的.en字符串) – Heps 2013-02-09 22:06:20