2016-06-15 21 views
0

私は多くのサブフォルダを持つメインフォルダを持っており、その中にエクセルファイルがあるとします。すべてのサブフォルダのファイル名の一部を変更したい私はベストを尽くしましたが、私はバッチを初めて使っています。それを解決する方法は全く分かりません。たとえば : - 現在のバージョンfile123 2016.xlsx - 予想バージョンfile123 2017.xlsx名前を変更してバッチをリネームする:バッチ内のファイル名の一部を変更する方法

私の試み:

@echo off 
cd C:\example\ 

    setlocal EnableDelayedExpansion 
    Set var1=2016 
    Set var2=2017 
    for /r %%G in (*.xlsx) do (
    set "filename=%%G" 
    ren "!filename!" "!filename:%var1%=%var2%!" 
) 

あなたはすべてのソリューションを持っている場合は、私に教えてください!どうも! :)

+3

なぜあなたはここにいるのですか? –

+0

どういう意味ですか?私はここに新しいです、多分私はルールに固執しない?それは私の最初の投稿です、私は私の投稿を間違えましたか? –

+0

帽子をロックした投稿タイトルを書く必要はありません。何かがあれば、あなたはそれなしでより良い反応を得るでしょう。 –

答えて

0

Set var1=2016の後に空白があります。バッチはスペースについて非常に嫌なので、スペースは変数の一部です。これを回避するには、次の構文を使用します。

set "var1=2016" 

別のエラー:

ren /?は言う:ren [drive:][path]filename1 filename2
あなたは、宛先名のパスを与えることはできません。

これを試してみてください:

for /r %%G in (*.xlsx) do (
    set "filename=%%~nxG" 
    ren "%%G" "!filename:%var1%=%var2%!" 
) 

%%~nxGはあなたにN雨や電子のみXテンションを与えます。

+0

私はそれを修正しましたが、私のコードはまだ適切に動作しません。私はどこにエラーがあるのか​​わかりませんが、あなたの役に立つコメントに感謝します! –

+0

「正しく動作しません」と定義してください。 errormessagesを見るには '@echo off'を削除してください。 – Stephan

+0

cd C:\ Example \ for %% f in(*%。xslx%)do( "filename = %% f" ren "!filename!" "と入力してください。 ) pause> nul ここで問題が発生しますが、名前を変更するためにすべてのサブフォルダを調べてファイルを見つける方法がわかりません。エラーは構文エラーです。 SETLOCAL EnableDelayedExpansion セットVAR1 = 2019 セットVAR2 = 2016 CDのC:\に/ R/Dの%% G行う( セット "ファイル名= %% G" REN用例\ (*%xslx%)。 "!filename!" "!ファイル名:%var1%=%var2%!" ) pause> nul –

関連する問題