2

ちょっと、そこ。.bat ファイルを使用したファイル名の変更について、皆さんの助けが必要です。指定した文字数の後にトリミングする必要がある複数のファイルを取得しました。たとえば、ファイル名の 5 文字目以降をこのようにトリミングしたい

filename.exe > filen.exe
anothername.exe > anoth.exe
absolutelydifferentname.exe > absol.exe

また、できれば逆の方法も教えていただきたいです。つまり、ファイル名の先頭から切り取って、最後に特定の文字数を残します。

ありがとうございました。

4

3 に答える 3

4

バッチファイルで実行する場合は、次のようにします。

@echo off

setlocal ENABLEDELAYEDEXPANSION

for %%i in (<Directory name here>\*) do (
  set filename=%%~ni
  ren "%%~i" "!filename:~0,5!%%~xi"
)

endlocal

最終的なファイル名の構成に使用される文字数を変更したい場合は、 の「5」を変更してください。ren "%%~i" "!filename:~0,5!%%~xi"

最後の 5 文字を取得するには、次を試してください。ren "%%~i" "!filename:~-5!%%~xi"

最初の 5 文字を除くすべての場合:ren "%%~i" "!filename:~5!%%~xi"

于 2012-06-18T04:31:39.287 に答える
2

値に含まれ、遅延拡張が有効になっている場合、の拡張は失敗するため、ファイル名に文字が含まれている場合、イリジウムソリューションは失敗します。これは、ループ内で遅延拡張のオンとオフを切り替えることで簡単に修正できます。!%%i!

通常、上部で遅延拡張を明示的に無効にする必要はありません。ただし、バッチファイルの開始時に遅延拡張がすでに有効になっている可能性があるため、安全のために含めました。

@echo off
setlocal disableDelayedExpansion
for %%F in ("<Directory name here>\*") do (
  set "full=%%F"
  set "name=%%~nF"
  set "ext=%%~xF"
  setlocal enableDelayedExpansion
  ren "!full!" "!name:~0,5!!ext!"
  endlocal
)
于 2012-06-18T11:16:49.227 に答える
0

これが 1 回限りの、またはその他の手動のシナリオである場合に備えて、 CKRenameを見てください。

于 2012-06-18T04:00:45.653 に答える