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

时间:2016-07-15 05:08:27

标签: windows batch-file cmd filenames

我想将大量文件重命名为S001S002等内容。 我从here获取此代码以添加前缀:

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

所以我试着修改它,所以变量会随for递增,如下所示:

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

显然这是错误的,我后来读到/l使数字值而不是文件名工作,所以%a并不意味着任何事情(如果我&#39,请纠正我) ;我错了。)

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

修改

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

  • 在特定目录中执行
  • 具有特定文件扩展名
  • 告诉您该目录中有多少个该文件的文件
  • 要求提供新名称,稍后会添加数字后缀
  • 循环以更改不同目录中的文件

    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循环再做一次循环,即目录中的文件数量,我不知道为什么

run

1 个答案:

答案 0 :(得分:2)

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

是单向的。请参阅set /?setlocal /?

从Windows NT命令Shell

  

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

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

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