我想批量修剪文件名,例如:从“This IsGood 1.1.png”到“tig11.png”
条件是脚本应该从文件名中获取所有大写字母,将它们转换为小写字母,然后形成修剪后的文件名,其中没有任何空格......
请我帮助完成这项任务..谢谢!
我想批量修剪文件名,例如:从“This IsGood 1.1.png”到“tig11.png”
条件是脚本应该从文件名中获取所有大写字母,将它们转换为小写字母,然后形成修剪后的文件名,其中没有任何空格......
请我帮助完成这项任务..谢谢!
您可以从文件名的简单迭代开始
set str=This IsGood 1.1
:again
set chr=%str:~0,1%
set str=%str:~1%
if not "%chr%"=="" echo %chr%
if not "%str%"=="" goto :again
阅读HELP SET
,HELP IF
和HELP GOTO
现在,如果理解,请继续将echo
命令更改为调用...
if not "%chr%"=="" call :checkchar %chr%
...
:checkchar
echo %1
goto :eof
读HELP CALL
然后实现用于检查字符是否为大写的实际代码
:checkchar
for %%c 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 0 1 2 3 4 5 6 7 8 9) do if .%1==.%%c echo %%1
goto :eof
读HELP FOR
现在将此新echo
命令更改为对函数的新调用以将变量设置为小写
现在将结果连接到一个fn
变量中,您需要将其初始化为空白。
并使用适当的文件名处理包装所有内容,仅提取文件名(请参阅处理参数语法中的 ~n 选项),然后用新名称组合回完整路径(使用 ~d ~p ~x 选项)
@echo off
set fn=
call :upcaseonly %~n1
echo %~dp1%fn%%~x1
goto :eof
:upcaseonly
set str=%*
:again
set chr=%str:~0,1%
set str=%str:~1%
if not "%chr%"=="" call :checkchar %chr%
if not "%str%"=="" goto :again
goto :eof
:checkchar
for %%c 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 0 1 2 3 4 5 6 7 8 9) do if .%1==.%%c set fn=%fn%%1
goto :eof
以此为起点。您必须添加自己的逻辑来重命名文件并处理文件是否已存在或文件无法重命名...