Windows脚本FOR命令重命名目录中的所有文件

我试图在命令提示符下使用FOR命令重命名Windows目录中的所有文件,如下所示:

for %1 in (*.*) do ren %1 test%1 

例如,这将文件enc1.ctl重命名为testenc1.ctl enc2.ctl重命名为testenc2.ctl

那不是我想要的。 我想要的是enc1.ctl改名为test1.ctl enc2.ctl改名为test2.ctl

我怎么做?


@Akelunuk:谢谢,那种工作,但我有文件名称

h263_enc_random_pixels_1.ctl,h263_enc_random_pixels_2.ctl我想重命名为

test1.ctl和test2.ctl分别

那么怎么样?

Solutions Collecting From Web of "Windows脚本FOR命令重命名目录中的所有文件"

如果你知道文件的数量,(比如10),你可以使用

 for /L %1 in (1,1,10) do ren enc%1.ctl test%1.ctl 

我懂了!

 for %1 in (.) do ren %1 t%1 

接着:

 ren tenc*.* test*.* 

我不确定是否可以批量生产,但是我再也没有掌握过这种原始语言…… 😛

如果CMD不是强制性的,但是你不能使用一个好的文件重命名器,你可以用WSH来做到这一点:

 var path= "E:/tmp"; var fso = WScript.CreateObject("Scripting.FileSystemObject"); var folder = fso.GetFolder(path); var files = new Enumerator(folder.files); for (; !files.atEnd(); files.moveNext()) { var file = files.item(); var fileName = file.Name; var p = /^enc(\d+)\.ctl$/.exec(fileName); if (p != null) { var newFileName = "test" + p[1] + ".ctl"; // Optional feedback WScript.echo(fileName + " -----> " + newFileName); file.Move(newFileName); } } 

当然,把它放在一个file.js中
我实际上测试与file.Copy(file.ParentFolder + "/SO/" + newFileName); 避免丢失文件…

HTH。

这使用PREFIX和今天的日期和时间重命名过滤器文件类型的目录中的所有文件

 @echo ON cls for %%a in (*.pdf) do (set myfiledate=%%~ta echo !myfiledate!) echo Date format = %myfiledate% echo dd = %myfiledate:~0,2% echo mm = %myfiledate:~3,2% echo yyyy = %myfiledate:~6,4% echo. echo Time format = %myfiledate% echo hh = %myfiledate:~11,2% echo mm = %myfiledate:~14,2% echo AM = %myfiledate:~17,2% echo. echo Timestamp = %myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2% ECHO "TEST..." > "test-%myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-TIME-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2%.txt" PAUSE 

这回声成功修改日期和时间作为后缀,但不解析信息到重命名。 我不知道为什么,但它非常接近。 也许有人不能适应你的目的。

 @echo ON setlocal cls for %%a in (*.pdf) do (set myfiledate=%%~ta echo !myfiledate!) :DATETIME echo Date format = %myfiledate% echo dd = %myfiledate:~0,2% echo mm = %myfiledate:~3,2% echo yyyy = %myfiledate:~6,4% echo Time format = %myfiledate% echo hh = %myfiledate:~11,2% echo mm = %myfiledate:~14,2% echo AM = %myfiledate:~17,2% = %myfiledate:~17,2% echo. echo Timestamp = %myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2% ECHO "TEST..." > "test-%myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-TIME-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2%.txt" for /f "delims=" %%a in ('dir *.pdf /t:a /a:-d /b /s') do call :RENAME "%%a" :RENAME REM for /f "tokens=1-6 delims=/ " %%a in ('dir %%a /t:w^|find "/"') do ( ren %%a "3DC-test-OFF-ELE-%myfiledate:~0,2%_%myfiledate:~3,2%_%myfiledate:~6,4%-TIME-%myfiledate:~11,2%_%myfiledate:~14,2%_%myfiledate:~17,2%~x1") PAUSE GOTO :EOF