2012-04-25 12 views
1

私がやろうとしていることは、最後の "d"をすべてのexeから "d"を最後に削除することです。たとえば: [stringofwhateverlengthd.exe] へ[stringofwhateverlength.exe]windowsバッチ:ファイル名の最後の "d"を削除する

を(Dが不足している注意してください)私は [REN * D.EXE * .exeファイル] を試してみましたが、それは実際に動作しません。探していたが、そのようなファイル名を解析する何かを見つけていない。これは簡単に多くのツールで行うことができますが、私はWindowsのバッチソリューションを探しています。ありがとう。

更新:これは素晴らしい機能でした!ありがとう。元のフォルダとコピー先のフォルダの元の内容を変更せずにxcopyを使用すると、これを行う方法はありますか?例えば [* \の*のD.EXE bは\をXCOPY EXE。]

+0

更新された質問に関してはもちろんあります。なぜあなたはそれを試してみませんか? Andriyの答えにあるrenameコマンドを適切なxcopyコマンドに置き換えます。 – dbenham

答えて

3

あなたはこのような何かを試みることができる:例えば、@Marcがやった、のように、

FOR %%A IN (*.exe) DO (
    SET "name=%%~nA" 
    SETLOCAL EnableDelayedExpansion 
    IF /I !name:~-1! == d (
    RENAME "%%A" "!name:~0,-1!.*" 
) 
    ENDLOCAL 
) 

しかし、これにもっと考えて入れた後に(ありがとう!)、あなたは実際にはるかに簡単な何かを実際に思いつくことができます:

FOR %%A IN (*d.exe) DO (
    SET "name=%%~nA" 
    SETLOCAL EnableDelayedExpansion 
    RENAME "%%A" "!name:~0,-1!.*" 
    ENDLOCAL 
) 
+1

ニース。私は似たようなものを組み立てていた。しかし、ファイルセットを '* d.exe'に制限してもif文は必要ありません。 – Marc

+0

@Marc:ありがとう、ありがとう!私の答えを更新しました。 –

関連する問題