すべてのディレクトリの最初の文字を大文字にして、特定のハードドライブ(C:ではなく)上のすべてのディレクトリの名前を変更しようとしています(だから: \images
- > \Images
)残念ながら、これを一から書くのに十分な経験はありません。
すべてのディレクトリの最初の文字を大文字にして、特定のハードドライブ(C:ではなく)上のすべてのディレクトリの名前を変更しようとしています(だから: \images
- > \Images
)残念ながら、これを一から書くのに十分な経験はありません。
回答:
次のネイティブバッチスクリプトは、ドライブX:内のすべてのディレクトリの名前を変更します。読み取り専用、隠しディレクトリ、システムディレクトリは無視され、再解析ポイントは無視されます。名前を小文字に変換してから、ディレクトリ名の最初の文字(英字)を大文字にします。名前のUnicodeを処理しません。
@echo off
setlocal disableDelayedExpansion
set "drive=x"
set "tempFile=%temp%\initUpper%random%.txt"
dir /s /b /l /ad-l-h-s-r %drive%:\* >"%tempFile%"
for /f "usebackq eol=: delims=" %%F in ("%tempFile%") do (
set "old=%%F"
set "new=%%~nxF"
setlocal enableDelayedExpansion
for %%C in (
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
) do if /i "!new:~0,1!" equ "%%C" set "new=%%C!new:~1!"
ren "!old!" "!new!" 2>nul || echo unable to rename !old!
endlocal
)
del "%tempFile%"
このスクリプトはパフォーマンス上の理由から一時ファイルを使用します。 FOR / FにDIRコマンドの出力を直接読み取らせるように変更できます。しかし、出力はかなり大きくなる可能性があり、コマンドの結果セットが非常に大きい場合、FOR / Fは非常に遅くなります。
DIRコマンドに適用できる多くの調整があります。例えば:
を削除 /ad
ファイルとディレクトリの名前を変更するオプション: dir /s /b /l /a-l-h-s-r
を削除 /a-h-s
隠しフォルダとシステムフォルダを含めるオプション: dir /s /b /l /ad-l-r
を削除 /l
頭文字以外のすべての大文字小文字を保存するオプション: dir /s /b /ad-l-h-s-r
Martheen Cahya Pauloがコメントで述べているように、この質問はすでに間接的に答えられています。
あなたは素晴らしいツールを使うことができます、 宇宙竜巻リナマー 、ここに掲載されているように: https://superuser.com/a/65304/125301 、