在Windows中为文件名添加数字后缀

我想重命名大量的文件somthing像S001S002等。我从这里得到这个代码添加一个前缀:

 for %a in (*.*) do ren "%a" "prefix - %a" 

所以我试图修改它,所以一个variables会随着for增加,如下所示:

 for /l %x in (1,1,5) do %a in (*.*) do ren "%a" "SQ00%x" 

很明显,这是错误的,我后来看到/l使工作的数值而不是文件名,所以%a并不意味着什么(纠正我,如果我错了)。

所以我想知道如何使用文件夹内的文件的文件名增加for循环中的值。

编辑

我现在设法编写了一个批处理命令来重命名文件,并且:

  • 在特定的目录下执行
  • 具有特定的文件扩展名
  • 告诉你该扩展名在该目录中有多less个文件
  • 要求一个新的名字,稍后将添加数字后缀
  • 循环更改不同目录中的文件

     ECHO OFF Setlocal enabledelayedexpansion :start cls echo "%cd%" echo where are the files? set/p "files=>" cd "%files%" echo now in: echo "%cd%" echo files extension: set/p "ext=>" ::amount of files in the directory set/a cnt=0 for %%a in (*.%ext%) do set /a cnt+=1 echo File count = %cnt% PAUSE echo new file name: set/p "name=>" set/a Count=1 for /r %%a in (*.%ext%) do ( echo !Count! ren "%%a" "%name%!Count!.%ext%" set /a Count=Count+1 ) PAUSE goto start 

现在的问题是重命名文件的FOR循环做了多一个循环,目录中的文件数量,我不知道为什么

跑

 Setlocal enabledelayedexpansion for %%a in (*.*) do ( set /a Count=Count+1 echo ren "%%a" "!Count! - %%a" ) 

是一种方式。 看到set /?setlocal /?

从Windows NT命令外壳

圆括号也可以用来输入多行命令。 如果命令行以一组或多组不平衡括号结束,则命令行假定在下一行继续。 如果该命令是交互式输入的,shell会提示输入更多的信息,直到所有括号保持平衡。 如果该命令是脚本的一部分,shell将读取其他脚本行,直到所有括号保持平衡。 例如:

 1. C:\>( 2. More?echo command1 3. More?echo command2 4. More?) 5. command1 6. command2 

第一行只包含一个左括号。 shell检测到这一点,并提示输入更多信息。 接下来,输入两个ECHO命令。 最后,右括号平开括号,命令完成。 shell然后执行复合命令,执行两个单独的ECHO命令。 单个命令不能跨越多行命令中的行。 一条物理线路的末端总是终止一个简单的命令(无论是键入还是输入到脚本文件中)。 在前面的例子中,注意物理线路的末端是如何终止每个ECHO命令的。