私は何千ものファイル名をクリーンアップしていますが、ほとんどは次のような構造になっています: "xxxx xxxx - xxxxx xxxx xxxx.yyy" 問題は、大文字で始まるものとそうでないものがあることです。(実際には他にも問題がありますが、簡単に修正できます。)
任意の文字の文字列を取り、ピリオドの前にあるすべての単語を大文字にしたいと思います。
FINDでできるように、ファイルを使用するのではなく、パイプを使用して1行のコードを使用することをお勧めします。
最後に、文字列全体を一度に大文字にすることを好みますが、各単語を個別に処理することに反対しているわけではありません。
例:
Input: "this - string IS an EXAMPLE 4 u"
Output: "This - String IS An EXAMPLE 4 U"
大文字とアルファベット以外の文字 (ダッシュ、アンダースコア、数字など) をすべて無視し、影響を受けずに渡したいと思います。
したがって、次のようなコードを使用できるようにしたいと思います (2 行目が関連するものです)。
for /f "tokens=*" %%x in ('dir /b *.zzz') do (
for /f "tokens=*" %%y in ('echo %%x ^| findstr /r "s/\s\w/\U$&/g;"') do (
rename "%%x" "%%y" ))
可能であれば、次のようにコマンドラインでテストできるようにしたいと思います。
echo hello to you | findstr /r "s/\s\w/\U$&/g;"
私の問題は、上記の例では出力が得られないことです。
ご覧のとおり、正規表現の例を検索しましたが、findstr でプラグアンドプレイすることはできません。
ファイル拡張子を大文字にしたくないのですが、これは簡単に修正できるので、あまり気にしません。
sed、grep、またはその他のサードパーティ製ソフトウェアの提案はご遠慮ください。ただし、他の MS ベースのソリューション (Enterprise または Ultimate に付属するもの、または Microsoft からダウンロード可能なもの) を受け入れます。
前もって感謝します!