Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Command line 批量重命名文件夹中的文件_Command Line_Batch File_Batch Rename - Fatal编程技术网

Command line 批量重命名文件夹中的文件

Command line 批量重命名文件夹中的文件,command-line,batch-file,batch-rename,Command Line,Batch File,Batch Rename,我有一些以下格式的文件(大约10000个文件) SDEF-2001-23965-236.pdf SlkF-1991-65-123.pdf 我想检查文件名是否为所需格式,通过从末尾删除4个字符来重命名它 SDEF-2001-23965-236.pdf >>SDEF-2001-23965.pdf SlkF-1991-65-123.pdf >>SlkF-1991-65.pdf 我不知道应该如何创建一个.bat文件来完成我需要的工作。如果需要在DOS中进行“字符串操

我有一些以下格式的文件(大约10000个文件)

SDEF-2001-23965-236.pdf
SlkF-1991-65-123.pdf
我想检查文件名是否为所需格式,通过从末尾删除4个字符来重命名它

SDEF-2001-23965-236.pdf >>SDEF-2001-23965.pdf

SlkF-1991-65-123.pdf    >>SlkF-1991-65.pdf 
我不知道应该如何创建一个.bat文件来完成我需要的工作。

如果需要在DOS中进行“字符串操作”,以下链接很有用:


如果您有格式为
aaaa bbb cc ddd.ext的
*.pdf
文件(4部分+扩展名)

创建名为
rn.bat的文件

@echo off
set str=%1
for /f "tokens=1,2,3,4 delims=- " %%a in ("%str%") do set p1=%%a&set p2=%%b&set p3=%%c&set p4=%%d
set ext=%str:~-4%
set "result=%p1%-%p2%-%p3%%ext%"
ren %1 %result%
@echo off
for %%i in (%1) do rml.bat %%i
创建名为
rnall.bat的文件

@echo off
set str=%1
for /f "tokens=1,2,3,4 delims=- " %%a in ("%str%") do set p1=%%a&set p2=%%b&set p3=%%c&set p4=%%d
set ext=%str:~-4%
set "result=%p1%-%p2%-%p3%%ext%"
ren %1 %result%
@echo off
for %%i in (%1) do rml.bat %%i
然后,在命令行中输入命令:
rnall*.pdf


这不是最好的代码,你可以使用函数来做得更好

我写了一些东西,比如说@echo off SETLOCAL enabledelayedexpansion FOR%%A IN(*.pdf)do(set st2=“%%A”set st1=%st2:~0,-8%echo REN%%A%st1%)GOTO:eof pause但set st2=“%%A”不起作用,我是通过回声找到的command@ghasedak:在本例中,您正在启用延迟扩展,但您没有使用它,为什么?我的意思是,
%st2:~0,-8%
应该是
!st2:~0,-8
%st1%
应该是
!st1