Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 基于简单规则转换文件名_Batch File_Batch Rename - Fatal编程技术网

Batch file 基于简单规则转换文件名

Batch file 基于简单规则转换文件名,batch-file,batch-rename,Batch File,Batch Rename,我想批量修改文件名,例如:从“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%"=="

我想批量修改文件名,例如:从“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
阅读
帮助设置
帮助如果
帮助转到

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

 if not  "%chr%"=="" call :checkchar %chr% 
 ...
 :checkchar 
 echo %1
 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 echo %%1
goto :eof
阅读
帮助以获取

现在将这个新的
echo
命令更改为对函数的新调用,以将变量设置为小写

现在将结果连接到一个,比如,
fn
变量中,您需要将该变量初始化为空白

并使用适当的文件名处理方式包装所有文件,仅提取文件名(请参见处理参数语法中的~n选项),然后使用新名称重新组合完整路径(使用~d~p~x选项)


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

您可以使用
for/L
循环检查每个字符,或者检查失败的位置?如果现有名称只由小写字母组成,您会得到?如果JohnDoe.txt和JoyDivision.txt存在于您得到的同一个文件夹中@dbenham 1.如果全部为小写,则执行bat脚本,但对文件不做任何操作。2.文件被覆盖或可以添加一个数字,即JD.txt或JD_1.txtso,文件被覆盖或添加一个数字?让我们看看您尝试了什么,发现了什么问题。
@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