regex - 批处理 : how to split string on uppercase letter

标签 regex batch-file cmd split

我有一个目录结构,其中包含以用户全名 (ForenameSurname) 命名的主目录,例如:

/user/JohnDoe
/user/JaneDoe
/user/MobyDick

现在我想复制整个结构,将 ForenameSurname 更改为“'名字的前两个字母'+'姓氏'”,结果:

/user/JoDoe
/user/JaDoe
/user/MoDick

我知道如何获取子字符串 (~n),但如何在第一个大写字母处拆分字符串?完全可以使用纯批处理吗?

最佳答案

@echo off
    setlocal enableextensions enabledelayedexpansion

    set "root=%cd%\users"

    for /d %%f in ( "%root%\*" ) do (
        set "name=%%~nxf"
        for /f %%a in ("!name:~0,2!"
        ) do for /f "tokens=* delims=abcdefghijklmnopqrstuvwxyz" %%b in ("!name:~2!"
        ) do if not "%%~nxf"=="%%~a%%~b" if not exist "%root%\%%~a%%~b" (
            echo ren "%%~ff" "%%~a%%~b"
        ) else (
            echo "%%~nxf" can not be renamed to "%%~a%%~b"
        )
    )

重命名操作只会回显到控制台。如果输出正确,请删除 ren 命令前缀的 echo

关于regex - 批处理 : how to split string on uppercase letter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29170192/

相关文章:

php - 将字符串与数组匹配的正则表达式

python - 使用Python正则表达式从含有汉字的推文中识别转发者

Windows Management Instrumentation 命令行 WMIC 批量提取属性

python - CMD无法正常读取 'C:\Program Files'

python - <这时候出乎意料

regex - 电话号码的最佳正则表达式是什么?

regex - Shell - 这个命令有什么作用?

java - 如何使 ".bat"文件使用某个文本文件的文本作为命令

batch-file - 在cmd中重新排列数组元素

java - 使用 Java 代码以管理员身份运行 cmd