バッチスクリプトを使用してフォルダ名を変更する方法は? 次のようにファイル名を変更する必要があります。
a Filename1
b filename2
to
A
B
つまり、最初の部分だけを大文字にして部分文字列にします。これまでのところ、私は思いついた:
@echo "Renaming file"
for /D %%f in (C:\REN\*) do rename "%%f" "%%~nxf_myname"
pause
バッチスクリプトを使用してフォルダ名を変更する方法は? 次のようにファイル名を変更する必要があります。
a Filename1
b filename2
to
A
B
つまり、最初の部分だけを大文字にして部分文字列にします。これまでのところ、私は思いついた:
@echo "Renaming file"
for /D %%f in (C:\REN\*) do rename "%%f" "%%~nxf_myname"
pause
ファイルではなく、C:\REN\ にあるフォルダーの名前を実際に変更したいと思っていると思います。
また、「最初の部分」とは、最初のスペース文字までを意味すると想定しています。これが正しい場合は、FOR /F を使用して名前をトークンに解析します。
SET 検索および置換機能は、検索部分に関して大文字と小文字を区別しません。
!
元の名前と新しい名前の両方の変数を作成しています。フォルダー名に文字が含まれている場合に備えて、遅延拡張機能のオンとオフを切り替えています。値が含まれていて!
、遅延展開が有効になっている場合、変数は破損します。
@echo off
setlocal disableDelayedExpansion
echo Renaming folders
for /d %%F in (C:\REN\*) do (
for /f "eol= " %%A in ("%%~nxF") do (
set "name=%%F"
set "newName=%%A"
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 set "newName=!newName:%%C=%%C!"
ren "!name!" "!newName!"
endlocal
)
)