使用 .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 /?