批处理文件仅在变量中以大写形式进行更改

时间:2014-11-20 11:53:08

标签: batch-file uppercase

我希望批处理文件只能以小写字母进行更改

更改是在每个A(从字母顺序)到-A

之前进行的

让我说他写完“AbkijCljfs”后会比较“-Abkij-Cljfs”

没有使用cmd的外部文件

2 个答案:

答案 0 :(得分:3)

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "string=AbkijCljfs"

    set "buffer="
    for /f "delims=" %%a in ('
        cmd /q /u /c "(echo(%string%)" ^| more 
    ') do (
        set "dash=-"
        for /f "delims=ABCDEFGHIJKLMNOPQRSTUVWXYZ" %%b in ("%%a") do set "dash="
        setlocal enabledelayedexpansion
        for /f "delims=" %%b in ("!buffer!!dash!") do (
            endlocal
            set "buffer=%%b%%a"
        )
    )
    echo([%buffer%]

这使用通过管道传输到cmd的unicode more实例来拆分字符串和for循环,以确定每个字符是否为大写。

答案 1 :(得分:0)

使用sed或perl

echo 'AbC' | sed 's/\([A-Z]\)/-\1/g'

为每个文件执行此操作

for i in `ls -1`; do
    sed 's/\([A-Z]\)/-\1/g' $i > $i_fixed
done

或者您可以使用ed来执行此操作