如何重命名和用前导零填充目录[重复]

问题描述 投票:0回答:1

我正在寻找一种批量重命名多个文件夹的方法。基本上,我需要用前导零填充它并使其成为 6 位数字

示例:

123 ---> 000123

22 ----> 000022

5678 --> 005678

我知道该怎么做的唯一方法是:

for /f %f in ('dir /b') do ren "%f" "0%f"  but this only pads it with 1 zero

请帮忙。任何方向表示赞赏谢谢

windows batch-file cmd zero-padding
1个回答
0
投票

在批处理文件中可以使用以下代码:

@echo off
setlocal EnableExtensions EnableDelayedExpansion
for /F "delims=" %%I in ('dir /AD-L /B 2^>nul ^| %SystemRoot%\System32\findstr.exe /R /X "[0123456789][0123456789]*"') do (
    set "FolderName=00000%%I"
    set "FolderName=!FolderName:~-6!"
    if not !FolderName! == %%I ren %%I !FolderName!
)
endlocal

要了解所使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完整、仔细地阅读每个命令显示的帮助页面。

  • dir /?
  • echo /?
  • endlocal /?
  • findstr /?
  • for /?
  • if /?
  • ren /?
  • set /?
  • setlocal /?

阅读有关 使用命令重定向运算符的 Microsoft 文档,了解

2>nul
|
的说明。重定向运算符
>
|
必须在
FOR
命令行上使用脱字符号 ^ 进行转义,以便在 Windows 命令解释器在执行命令 FOR(执行嵌入的
)之前处理此命令行时将其解释为文字字符dir
命令行,输出由
findstr
过滤,并使用在后台启动的单独命令进程,并使用
cmd.exe /c
以及
'
中的命令行作为附加参数附加。

© www.soinside.com 2019 - 2024. All rights reserved.