2017-08-25 10 views
0

私が作成したものに基づいてファイルの名前を変更したかったので以前はここにいましたが、やってしまったのは簡単なことでしたが、私はそれが良いことだと思うので、私はこのコードを持っている別のものとしています:.bat括弧内の内容でファイルの名前を変更します

入力:

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
chcp 65001 
SET "sourcedir=C:\Users\leandro.batista\Desktop\SAMPLES RENAMER" 
SET "destdir=C:\Users\leandro.batista\Desktop\SAMPLES RENAMER\BACKUP" 
FOR /f "delims=()" %%a IN ('dir /b /a-d "%sourcedir%\*.pdf" ') DO (


    REN "%%a" "%sourcedir%\*.pdf" 
    PAUSE 

    ) 

私はexempleのために、ファイル名のかっこ内にあったものを使用してファイルの名前を変更しようとしました

File Name: blablabla(exampleIwantToExtract) 

出力:

File Name: (exampleIwantToExtract) 

私はそれに構文エラーがあり、私はなぜ、私はideiaカントーを持ってかなりわからない、それはRENコード、または良いかもしれないと言うバットを実行すると、それがなければなりませんRENコード。 (あなたにblablablaを与えるだろうあなたの例のファイル名(複数可)のため2。あなたはそれを定義しない場合、それは1デフォルト)

答えて

2

あなたがdelimsを使用している場合、あなたはまた、右tokenを使用する必要がありますが

しかし、ファイルの名前を変更するには、フルネームも必要です。最良の方法は、2つのネストされたループを使用することです。for外側のループに新しい名前を取得するには、ファイル名をトークン化するために(旧)ファイル名と内部for /fループを得るために、プレーンfor

for %%a in ("%sourcedir%\*.pdf") do (
    for /f "tokens=2 delims=()" %%b in ("%%~na") do (
    ECHO move "%%~fa" "%destdir%\(%%b)%%~xa" 
) 
) 

%%~faはあなたに(ドライブおよびパスを含む)の完全修飾ファイル名を与えます
%%~na

(もちろんあなたは、単に
しかし %%~xaはあなたにさらなる柔軟性を与え、代わりに .pdfを入力することができます)のみ
%%~xaはあなたのファイルの拡張子を与えるあなたのファイルの名前を与えます

注:renは、宛先パスをサポートしていません。したがって、代わりにmoveを使用しました。

+0

これは宝石のように働き、デリムの力を知らなかったし、%%の部分で紛失してしまった、とにかくちょっと変わったことだよ! –

+0

は 'for /? 'と読みます。それからもう一度それを読んでください。それから寝て、もう一度それを読んでください。それは私がそれを学んだ方法です: ') – Stephan

+0

さて、エコーなしで、それは私にエラーを与えています、あなたはなぜ知っていますか? @Stephan –

関連する問題