xxxxxxx_12345.pdfというファイルがありますが、そのサフィックスを削除しようとしましたが、結果はxxxxxxx.pdfになります。バッチスクリプトのリネームファイル
forfiles /S /M *_12545.pdf /C "cmd /c rename @file @fname*.pdf"
が、それは、ファイル名を変更することができませんでした: は、私は、次の試してみました。 この問題を解決するにはどうすればよいですか? ありがとう
xxxxxxx_12345.pdfというファイルがありますが、そのサフィックスを削除しようとしましたが、結果はxxxxxxx.pdfになります。バッチスクリプトのリネームファイル
forfiles /S /M *_12545.pdf /C "cmd /c rename @file @fname*.pdf"
が、それは、ファイル名を変更することができませんでした: は、私は、次の試してみました。 この問題を解決するにはどうすればよいですか? ありがとう
私は確かにforfiles
コマンドで仕事をする方法があると確信していますが、普通のfor
ループを使う方がはるかに簡単です。
@echo off
pushd %~dp0
setLocal EnableDelayedExpansion
for %%f in (*_12545.pdf) do (
set "CurrentFileName=%%~nf"
set "RenameTo=!CurrentFileName:~0,-6!"
echo.ren !CurrentFileName!%%~xf !RenameTo!%%~xf
)
pause>nul
setLocal EnableDelayedExpansion
ことにより、ユーザは!variable!
代わりの%variable%
ようなものを使用することを可能にします遅延環境変数を、使用することができます。
set "CurrentFileName=%%~nf"
%%~nf
拡張子なしであなたのファイルの名前を与えますので、この場合には、CurrentFileName
はFileName_12545
になります。構文の詳細については、for /?
と入力してください。
set "RenameTo=!CurrentFileName:~0,-6!"
接尾辞を削除するには、!variable:~0,-6!
を使用しました。これはString Manipulationです。ユーザーは、長さが6(この場合は_12545)の接尾辞なしの文字列を格納しています。
echo.ren !CurrentFileName!%%~xf !RenameTo!%%~xf
あなたが実際にその名前を変更する前に確認することができますので、私はren
の前にecho
を置きました。 %%~xf
は、その前に。(ドット)を含むファイル拡張子を返します。この場合、ファイル拡張子は.pdfです。
私はこれが少し助けてくれることを願っています。
ありがとう、虎、それをappriciate – Esmael
本当に**ファイル**をお持ちの場合、forfilesはまったく必要ありません。 – Compo