0
for %%a in (*.en.srt) do (
   echo %%~na
) 

このスクリプトは、拡張子が付いて.en.srtいるが拡張子が付いていないすべてのファイルを一覧表示します(.srt)。

.en部分も含まない部分文字列を取得するにはどうすればよいですか?

私はこのアドバイスを適用しようとしました:

http://www.dostips.com/DtTipsStringOperations.php#Snippets.MidString

%%aしかし、私はこれを%%~na可変にすることができません。

どうやら私はバッチ構文の基本を理解していないので、今ここで助けを求めています;)

4

2 に答える 2

2

名前の最後以降の文字のみが.拡張子の一部と見なされます。最後の前のすべての文字.(追加を含む.)は、ベース名の一部と見なされます。

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
于 2013-02-09T21:55:03.877 に答える
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!
)
于 2013-02-09T21:49:46.223 に答える