如何使用命令提示符将文件夹中的所有文件重命名为 xxx{incremental}.jpg

How do I rename all files from folder to xxx{incremental}.jpg using command prompt

我在同名文件夹中有以下文件。只是扩展名不同。所有文件都是有效的 jpg 但扩展名错误。

如何将扩展名为 .jpg 的文件重命名为不同的前缀?

ren *.* *.jpg ----> 对我不起作用,因为它们都具有相同的前缀

这应该适合你:

Clear-Host
$directoryPath = "C:\directory\with\images"
#Getting all files with "1.*" from $directoryPath
$foldercontent = Get-ChildItem -Path $directoryPath -Filter "1.*" | Where-Object { ! $_.PSIsContainer }
foreach($item in $foldercontent) {
    Move-Item -Path $item.FullName -Destination "$directoryPath\image$($item.Extension).jpg"
}

文件名将是:

image.J84.jpg
image.J85.jpg

您可以在命令提示符、PowerShell 提示符或批处理文件中使用 ForFiles 实用程序来完成此类任务。

forfiles /p "C:\directory\with\images" /m "1.*" /c "cmd /c ren @file image.@ext.jpg"

可以使用以下批处理文件将 1.J73 等文件重命名为 image_73.jpg:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "ImageFolder=C:\directory\with\images"
for /F "tokens=2 delims=Jj." %%I in ('dir "%ImageFolder%.J*" /A-D /B 2^>nul') do ren "%ImageFolder%.J%%I" "image_%%I.jpg"
endlocal

后台又执行了一个命令行进程:

C:\Windows\System32\cmd.exe /c dir "C:\directory\with\images.J*" /A-D /B 2>nul

DIR 在指定目录中搜​​索

  • 因为选项 /A-D(属性不是目录)所以只是文件
  • 匹配通配符模式 1.J*
  • 由于选项 /B 只输出找到的文件的名称,没有路径的裸格式到后台命令进程的句柄 STDOUT(标准输出) .

DIR 会输出一条错误消息来处理 STDERR(标准错误),因为找不到任何匹配的文件。通过使用 2>nul.

将其重定向到设备 NUL 来抑制此错误消息

阅读有关 Using command redirection operators 的 Microsoft 文档,了解 2>nul 的解释。重定向运算符 > 必须在 上使用脱字符 ^ 进行转义,以便在 Windows 命令解释器处理此命令时将其解释为文字字符 Windows执行命令 FOR 之前的行,它在后台启动的单独命令进程中执行嵌入式 dir 命令行。

DIRSTDOUT 的输出被 Windows 命令处理器捕获 cmd.exe 处理批处理文件并在启动后逐行处理 cmd.exe 自行关闭。

FOR 与选项 /F 忽略此处不出现的空行。默认情况下,非空行将使用普通 space 和水平制表符作为字符串分隔符拆分为子字符串。接下来将检查第一个子字符串的第一个字符是否为分号,默认情况下该分号是行尾字符,在这种情况下,该行将被忽略以进行进一步处理。否则,第一个子字符串被分配给指定的循环变量,FOR 循环体中的命令由 cmd.exe.

执行

行处理的默认行为由使用的选项 tokens=2delims=Jj. 修改。字符串定界符用 Jj. 重新定义,这意味着像 1.J73 这样的文件名被分成两个子字符串 173.选项 tokens=2 指示 FOR 将第二个子字符串(标记)分配给指定的循环变量 I。默认的 eol=; 被保留,因为在这种情况下第一个子字符串总是 1 ,因此这里没有文件名被忽略。因此对于名称为 1.J731.j73 的文件,字符串 73 被分配给循环变量 I.

然后执行重命名命令REN,使用当前文件的完全限定文件名和带有前缀image_的新文件名和现有文件编号文件名和文件扩展名 .jpg。因此,如果还没有名称为 image_73.jpg 的文件,并且要重命名的文件当前未被应用程序以阻止重命名的方式打开,则文件将从 1.J73 重命名为 image_73.jpg文件同时被应用程序打开。

为了了解使用的命令及其工作原理,请打开 command prompt window,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。

  • cmd /?
  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • ren /?
  • set /?
  • setlocal /?