通过bat添加文件大小来重命名目录中的所有文件

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

我想通过批处理文件添加文件大小来重命名目录中的所有文件。例如,大小为 66kb 的 apple.bmp 更改为 apple[66KB].bmp。这是我正在尝试的代码

> SET count=1 SET foldersize=0 FOR /f "tokens=*" %%F IN ('dir /s/b
> %folder%') DO (call :calcAccSize "%%F") echo %filesize% GOTO :eof
> 
> :calcAccSize  REM echo %count%:%1  REM set /a count+=1  set /a
> foldersize+=%~z1
> 
> ren %1 %~nx1[%~z1].mp4  GOTO :eof
> 
> @pause

[编辑/]

假设实际代码:

SET count=1
SET foldersize=0
FOR /f "tokens=*" %%F IN ('dir /s/b %folder%') DO (
    call :calcAccSize "%%F"
)
echo %filesize%
GOTO :eof

:calcAccSize
REM echo %count%:%1
REM set /a count+=1
set /a foldersize+=%~z1

ren %1 %~nx1[%~z1].mp4
GOTO :eof

@pause
batch-file
1个回答
0
投票

以下批处理文件重命名当前目录中的所有文件,并在文件扩展名后附加

[xKB]
,除了

  • 批处理文件本身也在当前目录中并且
  • 文件名中已包含
    [xKB]
    的文件。

代码是:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "eol=| delims=" %%I in ('dir /A-D /B 2^>nul ^| %SystemRoot%\System32\findstr.exe /R /V "\[[0123456789][0123456789]*KB\]"') do if not "%%~fI" == "%~f0" (
    set /A FileSizeKB=%%~zI / 1024
    set "NameFile=%%I"
    if not "%%~nI" == "" (
        set "FileName=%%~nI"
        set "FileExt=%%~xI"
    ) else (
        set "FileName=%%I"
        set "FileExt="
    ) 
    setlocal EnableDelayedExpansion
    ren "!NameFile!" "!FileName![!FileSizeKB!KB]!FileExt!"
    endlocal
)
endlocal

文件的文件名中可以包含空格或这些字符

&()[]{}^=;!'+,`~
之一。该代码还可以正确地重命名以点开头且没有更多点的文件,即名称类似于
.Test File!
的文件。

算术表达式仅适用于文件大小小于 2.147.483.648 字节的文件,即小于 2 GiB,因为 Windows 命令处理器

cmd.exe
仅支持使用值范围为 - 的 32 位有符号整数的算术表达式2147483648 至 2147483647(−231 至 231−1)。

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

  • call /?
    ... 解释
    %~f0
    ... 带有完整路径的批处理文件名。
  • dir /?
  • echo /?
  • endlocal /?
  • findstr /?
  • for /?
  • if /?
  • ren /?
  • set /?
  • setlocal /?

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

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

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