首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于简单规则转换文件名

基于简单规则转换文件名
EN

Stack Overflow用户
提问于 2012-04-14 20:06:50
回答 1查看 123关注 0票数 0

我想批量裁剪文件名,例如:从"This IsGood 1.1.png“到"tig11.png”

条件是脚本应该从文件名中获取所有大写字母,将它们转换为小写字母,然后形成修剪后的文件名,其中不包含任何空格……

请帮我完成这项任务。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-15 01:24:04

您可以从文件名的简单迭代开始

代码语言:javascript
复制
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 SETHELP IFHELP GOTO

现在,如果理解了,请继续将echo命令更改为调用...

代码语言:javascript
复制
 if not  "%chr%"=="" call :checkchar %chr% 
 ...
 :checkchar 
 echo %1
 goto :eof

阅读HELP CALL

然后实现用于检查字符是否为大写的实际代码

代码语言:javascript
复制
: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选项)

代码语言:javascript
复制
@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 

以此为起点。如果文件已经存在或无法重命名,您必须添加自己的逻辑来重命名文件和处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10153477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档