使用 .bat 文件以特定方式重命名多个文件夹
Rename multiple folders a specific way with a .bat file
我有一些以特定方式命名的文件夹:
管理
LS01....
LS02....
LS03....
我想创建一个位于该文件夹中的批处理文件。当批处理文件启动时,它遍历文件夹的名称并将 LS 更改为 SW,使用数字并删除多余的名称。
我没有批量编码的经验,但我尽力了。这是我到目前为止能想到的:
for /D %%f in ("%cd%\*") do (
set "name=%%~nf"
set name=%name:LS=%
rename "%%f" "SW_%name%"
pause.
)
我不明白为什么变量名的设置不起作用。文件夹已重命名,但仅使用 SW_。应该在变量名中的数字没有显示。
你能帮我解决我的代码吗?
感谢您的关注。
此致
山姆
PS:我是 Whosebug 的新手
你需要delayedexpansion
:
@echo off
setlocal enabledelayedexpansion
for /D %%f in ("%cd%\*") do (
set "name=%%~nf"
set name=!name:LS_=!
rename "%%~f" "SW_!name!"
pause.
)
更好的是跳过第二个 set
替换:
@echo off
setlocal enabledelayedexpansion
for /D %%f in ("%cd%\*") do (
set "name=%%~nf"
rename "%%~f" "!name:LS=SW!"
pause.
)
另外。您仅将变量的名称设置为文件名,而不是包含的扩展名,这将重命名文件以排除扩展名,这是您的意图吗?如果不是,请将 %%~nf
更改为 %%~f
为了阅读更多关于 delayedexpansion
的信息,请参阅 cmd.exe
中的 set /?
和 setlocal /?
。
我有一些以特定方式命名的文件夹:
管理
LS01....
LS02....
LS03....
我想创建一个位于该文件夹中的批处理文件。当批处理文件启动时,它遍历文件夹的名称并将 LS 更改为 SW,使用数字并删除多余的名称。
我没有批量编码的经验,但我尽力了。这是我到目前为止能想到的:
for /D %%f in ("%cd%\*") do (
set "name=%%~nf"
set name=%name:LS=%
rename "%%f" "SW_%name%"
pause.
)
我不明白为什么变量名的设置不起作用。文件夹已重命名,但仅使用 SW_。应该在变量名中的数字没有显示。
你能帮我解决我的代码吗?
感谢您的关注。
此致
山姆
PS:我是 Whosebug 的新手
你需要delayedexpansion
:
@echo off
setlocal enabledelayedexpansion
for /D %%f in ("%cd%\*") do (
set "name=%%~nf"
set name=!name:LS_=!
rename "%%~f" "SW_!name!"
pause.
)
更好的是跳过第二个 set
替换:
@echo off
setlocal enabledelayedexpansion
for /D %%f in ("%cd%\*") do (
set "name=%%~nf"
rename "%%~f" "!name:LS=SW!"
pause.
)
另外。您仅将变量的名称设置为文件名,而不是包含的扩展名,这将重命名文件以排除扩展名,这是您的意图吗?如果不是,请将 %%~nf
更改为 %%~f
为了阅读更多关于 delayedexpansion
的信息,请参阅 cmd.exe
中的 set /?
和 setlocal /?
。