使用左键盘零重命名文件夹中的文件

时间:2016-05-25 08:10:06

标签: batch-file

我需要重命名文件夹中的多个文件。文件名长度为6位或长度为9位,我需要使用前导零填充所有文件名,使其总长度为16位。

例如,如果文件名为123456.jpg,则应将其重命名为0000000000123456.jpg,如果是123456789.jpg,则应将其重命名为0000000123456789.jpg

最大总位数应始终为16位。

文件夹中可以有100个或更多文件。

我尝试了类似这样的东西,我知道这不是此任务所需的代码。但我从这个开始,需要帮助才能继续前进。

@echo off
setlocal enableextensions enabledelayedexpansion
rem iterate over all JPG files:
for %%f in (C:\Documents\Pictures\pic\*.jpg) do (
    rem store file name without extension
    set FileName=%%~nf
    rem Add leading zeroes:
    set FileName=00000000000!FileName!
    rem Add extension again
    set FileName=!FileName!%%~xf
    rem Rename the file
    rename "%%f" "!FileName!"
)

我更喜欢批处理脚本。但如果不可能,也会接受VB脚本。

根据Stephan的推荐,我更新了以下代码。但是,此代码不会将任何零前缀添加到文件名123456.jpg

我想在此添加我对批处理脚本编码的了解非常有限。我正在尝试的代码只是初始试验,但我想要的并且在问题中也提到的是脚本应该能够预备零,无论文件名是6位长还是9位长,并使其成为总计长度为16位。我认为,即使我正在尝试的代码开始工作,我仍然无法得到我想要的东西。

当我运行此代码时,它不会执行任何操作。

@echo off
setlocal enableextensions enabledelayedexpansion
rem iterate over all JPG files:
for %%f in (C:\Documents\Pictures\pic\*.jpg) do (
    rem store file name without extension
    set FileName=%%~nf
    rem Add leading zeroes:
    set FileName=0000000000!FileName!
    set FileName=!FileName:~-16!
    rem Rename the file
    rename "%%f" "!FileName!"
    set FileName=!FileName!%%~xf
    rem Rename the file
    rename "%%f" "!FileName!"
)

更新了将6位长文件名转换为16位长的代码:

@echo off
setlocal enableextensions enabledelayedexpansion
rem iterate over all JPG files:
for %%f in (C:\Documents\Pictures\pic\*.jpg) do (
    rem store file name without extension
    set FileName=%%~nf
    rem Add leading zeroes:
    set FileName=000000000!FileName!
    set FileName=!FileName:~-16!
    set FileName=!FileName!%%~xf
    rem Rename the file
    rename "%%f" "!FileName!"
) 

1 个答案:

答案 0 :(得分:0)

不要担心文件名的初始长度,只需在文件名的前面添加足够的零,并将结果字符串剪切为16个字符:

...
set FileName=%%~nf
set FileName=0000000000000000!FileName!
set FileName=!FileName:~-16!%%~xf
...