【问题标题】:Rename multiple folders a specific way with a .bat file [duplicate]使用.bat文件以特定方式重命名多个文件夹[重复]
【发布时间】:2021-02-05 10:01:48
【问题描述】:

我有一些以特定方式命名的文件夹:

管理

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:我是stackoverflow的新手

【问题讨论】:

    标签: windows batch-file cmd command


    【解决方案1】:

    你需要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 /?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 2014-06-07
      • 2012-06-20
      • 2021-07-21
      相关资源
      最近更新 更多