我在具有相同名称的文件夹中有以下文件。只有扩展名不同。所有文件都是有效的 jpg,但扩展名错误。
如何使用扩展名将它们重命名为 .jpg,并使用不同的前缀?
ren *.* *.jpg
----> 不适合我,因为它们都有相同的前缀
我在具有相同名称的文件夹中有以下文件。只有扩展名不同。所有文件都是有效的 jpg,但扩展名错误。
如何使用扩展名将它们重命名为 .jpg,并使用不同的前缀?
ren *.* *.jpg
----> 不适合我,因为它们都有相同的前缀
您可以ForFiles
在命令提示符、PowerShell 提示符或批处理文件中将该实用程序用于此类任务。
forfiles /p "C:\directory\with\images" /m "1.*" /c "cmd /c ren @file image.@ext.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
可以使用以下批处理文件将文件重命名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%\1.J*" /A-D /B 2^>nul') do ren "%ImageFolder%\1.J%%I" "image_%%I.jpg"
endlocal
使用命令行在后台执行了另外一个命令进程:
C:\Windows\System32\cmd.exe /c dir "C:\directory\with\images\1.J*" /A-D /B 2>nul
DIR在指定目录中搜索
/A-D
(属性不是目录)1.J*
和/B
的句柄STDOUT (标准输出)的选项,仅以裸格式输出找到的文件的名称,而没有路径。DIR将在找不到任何匹配文件时输出错误消息以处理STDERR (标准错误)。通过使用 将其重定向到设备NUL来抑制此错误消息2>nul
。
阅读有关使用命令重定向运算符的Microsoft 文档,了解2>nul
. 当 Windows 命令解释器在执行命令FOR之前在后台启动的单独命令进程中执行嵌入式命令行时,重定向运算符>
必须^
在FOR命令行上使用脱字符进行转义,以将其解释为文字字符。dir
DIR到STDOUT的输出由处理批处理文件的 Windows 命令处理器捕获,并在启动后自行关闭cmd.exe
后逐行处理。cmd.exe
带有选项的FOR/F
忽略此处未出现的空行。默认情况下,非空行将使用普通空格和水平制表符作为字符串分隔符拆分为子字符串。接下来将检查第一个子字符串的第一个字符是否为分号,分号默认为行尾字符,在这种情况下,该行将被忽略以进行进一步处理。否则,第一个子字符串将分配给指定的循环变量,并且FOR循环体中的命令由 执行cmd.exe
。
行处理的默认行为由使用的选项tokens=2
和delims=Jj.
. 字符串分隔符用J
and重新定义j
,.
这意味着像这样的文件名1.J73
被分成两个子字符串1
和73
. 该选项tokens=2
指示FOR将第二个子字符串(令牌)分配给指定的循环变量I
。在这种情况下,默认值eol=;
始终保留为第一个子字符串1
,因此此处不会忽略任何文件名。所以对于一个文件名1.J73
或1.j73
字符串73
被赋值给循环变量I
。
然后使用当前文件的完全限定文件名和新文件名执行重命名命令RENimage_
,新文件名具有现有文件名的前缀和文件编号以及文件扩展名.jpg
。因此1.J73
,image_73.jpg
如果还没有具有名称image_73.jpg
的文件,并且应用程序当前没有以防止在应用程序打开文件时重命名文件的方式打开要重命名的文件,则文件将从 重命名为 。
要了解所使用的命令及其工作原理,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读每个命令显示的所有帮助页面。
cmd /?
dir /?
echo /?
endlocal /?
for /?
ren /?
set /?
setlocal /?