サブフォルダとこの形式のファイル名がfilename_ex.docのファイルを含むフォルダAのファイルの名前を一括して変更し、filename.docのようにする方法はありますか?cmdバッチファイルの名前を変更するサブフォルダ/ファイル
私はしばらくこれをやろうとしてきましたが、それは叙事詩的な失敗でした。助けてください。
サブフォルダとこの形式のファイル名がfilename_ex.docのファイルを含むフォルダAのファイルの名前を一括して変更し、filename.docのようにする方法はありますか?cmdバッチファイルの名前を変更するサブフォルダ/ファイル
私はしばらくこれをやろうとしてきましたが、それは叙事詩的な失敗でした。助けてください。
私は、Martin Jamesに対する2番目のコメントの方向性に問題があったサブフォルダ内のファイルの名前を変更するとします。私はあなたがDIR/Sオプションでそのコードを試したと思います。しかし、あなたはとても近かったです:-)あなたはちょうど2つのループを使用する必要がありました!
編集固定コード出力が正しく見えたら、ECHOを機能させるためにドロップします。
@echo off
for /r %%D in (.) do (
pushd "%%~fD"
for /f "tokens=1-3 delims=_." %%A in ('dir /b *_ex.ext 2^>nul') do echo ren "%%A_%%B.%%C" "%%A.%%C"
popd
)
上記の限り、各ファイル名が_ex.ext
に表示される内容以外の_
または.
を持っていないように動作します。パス内の文字は問題にならないはずです。ファイル名だけが問題です。
ここでは、ファイル名(ユニコード名を除く)で動作するより堅牢なソリューションです。それはまたかなり速いです。これは部分文字列演算を使用するため、名前から取り除く文字数を知る必要があります。あなたの例では3文字です。結果のコマンドが正しく見えると、再びECHOを削除します。
@echo off
setlocal disableDelayedExpansion
for /f "delims=" %%F in ('dir /b /s *_ex.ext') do (
set "old=%%F"
set "new=%%~nF"
setlocal enableDelayedExpansion
echo ren "!old!" "!new:~0,-3!.ext"
endlocal
)
@MartinJames私はバッチ「プログラミング」をしようとしていますたびに、私は、私は決して私は/ F FOR試した手順;-) –
中に開発コードスニペットのいずれかを掲示することを、とても巨大な失敗FOR/Dすべてのものを読んで、ここからdocuを読んでください:[link](http://ss64.com/nt/for.html)。まあまあ良い結果はありません:(私は本当にWindowsのバッチプログラミングを嫌っています。 – Alex
@MartinJames:コマンドラインからも試してみました: 'tokens = 1-3 delims = _。"%a( 'dir * _ex.ext ')do echo%a_%b。%c' ...フォルダ/サブフォルダやその他のファイル(PATH)に "。"と "_"が含まれていれば、これは詰まってしまいます – Alex