批处理转换文件名大小写的问题?

现有代码报错,代码如下:
@echo off
setlocal
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%i in ('dir /b/s/a-d *.*') do (
set h="%%~ni"
for %%j in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do set h="!h:%%j=%%j!"
ren "%%i".* "!h!".*
)
endlocal
pause

另试了将ren "%%i".* "!h!".*改为ren "%%i" "!h!"运行不会报错,但会去掉所有的文件名后缀,求大神指点!

复制粘贴到记事本,另存为xx.bat,编码选ANSI<# :
cls
@echo off
rem 将文件名称中的小写字母转换成大写字母
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default)))"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$folder='.';
$lowercase=$false;
$files=@(dir -liter $folder -recurse|?{('.bat' -ne $_.Extension) -and ($_ -is [System.IO.FileInfo])});
for($i=0;$i -lt $files.length;$i++){
    $newbase=$files[$i].BaseName.toUpper();
    if($lowercase){$newbase=$files[$i].BaseName.toLower();}
    if($newbase -cne $files[$i].BaseName){
        $newname=$newbase+$files[$i].Extension;
        $newfile=$files[$i].Directory.FullName+'\'+$newname;
        write-host ($files[$i].FullName+' --> '+$newname);
        mv -liter $files[$i].FullName $newfile;
    };
};

温馨提示:内容为网友见解,仅供参考
第1个回答  2021-01-08

把英文文件名的字母全部批量修改为小写

本回答被网友采纳

批处理转换文件名大小写的问题?
复制粘贴到记事本,另存为xx.bat,编码选ANSI<# :cls@echo offrem 将文件名称中的小写字母转换成大写字母set #=Any question&set @=WX&set $=Q&set\/az=0x53b7e0b4title %#% +%$%%$%\/%@% %z%cd \/d "%~dp0"powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBloc...

求高手给一代码:批量将文件名小写改为大写(后辍为小写)
第二步,然后在软件左边进行设置,命名方式选择“替换”;大小写转换选择“全部大写”,这时可以在新文件名中可以看到小写的字母全部变成了大写。第三步,如果预览效果没有问题,就可以点击【批量重命名】按钮,开启批量处理了,当软件弹出“批量重命名成功”的弹窗,说明操作完成了。第四步,通过对比处理前...

批处理修改文件名和后缀名大写变成小写
echo offtitle 更改文件名大写为小写::本代码原思路由yyykkkyyyy提供,依梦琴瑶修改并添加子目录的文件处理::再次感谢yyykkkyyyy,我这里就借花献佛了。set dir=%~dp0&call:cdtofor \/f "delims=" %%i in ('dir\/s\/b\/ad') do set dir=%%i&call:cdtopauseexit\/b:cdtocd \/d %dir%for \/...

bat批处理 字符串替换不能区分大小写?
以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI echo off rem 替换字符区分大小写 set #=Any question&set _=WX&set $=Q&set\/az=0x53b7e0b4 title %#% +%$%%$%\/%_% %z set "line=AsrCompasr"set "oldstr=Asr"set "newstr=Can">"%tmp%\\t.t" echo;WSH.echo replace("%...

批处理命令区分大小吗
一般命令名文件名都不区分大小写,但有的参数是区分大小写的(如for命令中的%%A和%%a表示不同变量),牵涉内容一般都要区分大小写如常见的描述字符内容.

bat批处理修改文本文档指定行的内容?
则输出新的内容到一个临时文件temp.txt中;否则直接将当前行原样输出。最后将临时文件重命名为原文件名,完成修改。请注意,这个代码可能会将原文件名中的大写字母全部转换为小写字母。如果需要保留原文件名的大小写,可以修改move命令为:move \/y temp.txt "%%~dpa%%~na%%~xa" >nul ...

批处理 区分大小写问题.
echo offsetlocal enabledelayedexpansionset \/p s=<1.txtecho %s%(for \/l %%i in (0,1,2) do findstr !s:~%%i,1! 2.txt)>3.txtfor \/f "tokens=2" %%i in (3.txt) do set x=!x!%%iecho !x!>3.txt

批处理的疑问!
1、for语句中的变量必须用%%表示,%%i就表示为一个变量,不区分大小写。2、对的。3、%%~nxi !num!.txt,涉及到FOR语句的增强功能。10.for命令 for命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。在批处理文件中使用FOR命令时,指定变数请使用%%variable FOR变数参照的替换已被...

dos批处理变量内容替换的问题
第1个,确实变量的取舍替换里,查找时是不分大小写的。如果能确定要替换的字符串不是大写的和小写的都同时存在,那么可以先用find或findstr查找一下,比如只换小写的 echo %a%|find "good">nul&&set b=%a:good=best 如果不能确定,那就比较麻烦了,但用批处理总还是可以解决的,如果你想不到...

怎么让批处理不区分大小写
在IF后面加个\/i属性

相似回答