2017-03-26 4 views
1

xxxxxxx_12345.pdfというファイルがありますが、そのサフィックスを削除しようとしましたが、結果はxxxxxxx.pdfになります。バッチスクリプトのリネームファイル

forfiles /S /M *_12545.pdf /C "cmd /c rename @file @fname*.pdf" 

が、それは、ファイル名を変更することができませんでした: は、私は、次の試してみました。 この問題を解決するにはどうすればよいですか? ありがとう

+1

本当に**ファイル**をお持ちの場合、forfilesはまったく必要ありません。 – Compo

答えて

0

私は確かに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拡張子なしであなたのファイルの名前を与えますので、この場合には、CurrentFileNameFileName_12545になります。構文の詳細については、for /?と入力してください。

set "RenameTo=!CurrentFileName:~0,-6!" 

接尾辞を削除するには、!variable:~0,-6!を使用しました。これはString Manipulationです。ユーザーは、長さが6(この場合は_12545)の接尾辞なしの文字列を格納しています。

echo.ren !CurrentFileName!%%~xf !RenameTo!%%~xf 

あなたが実際にその名前を変更する前に確認することができますので、私はrenの前にechoを置きました。 %%~xfは、その前に。(ドット)を含むファイル拡張子を返します。この場合、ファイル拡張子は.pdfです。

私はこれが少し助けてくれることを願っています。

+0

ありがとう、虎、それをappriciate – Esmael