如何使用命令提示符将文件夹中的所有文件重命名为 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
命令行。
DIR 到 STDOUT 的输出被 Windows 命令处理器捕获 cmd.exe
处理批处理文件并在启动后逐行处理 cmd.exe
自行关闭。
FOR 与选项 /F
忽略此处不出现的空行。默认情况下,非空行将使用普通 space 和水平制表符作为字符串分隔符拆分为子字符串。接下来将检查第一个子字符串的第一个字符是否为分号,默认情况下该分号是行尾字符,在这种情况下,该行将被忽略以进行进一步处理。否则,第一个子字符串被分配给指定的循环变量,FOR 循环体中的命令由 cmd.exe
.
执行
行处理的默认行为由使用的选项 tokens=2
和 delims=Jj.
修改。字符串定界符用 J
和 j
和 .
重新定义,这意味着像 1.J73
这样的文件名被分成两个子字符串 1
和 73
.选项 tokens=2
指示 FOR 将第二个子字符串(标记)分配给指定的循环变量 I
。默认的 eol=;
被保留,因为在这种情况下第一个子字符串总是 1
,因此这里没有文件名被忽略。因此对于名称为 1.J73
或 1.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 /?
我在同名文件夹中有以下文件。只是扩展名不同。所有文件都是有效的 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
.
阅读有关 Using command redirection operators 的 Microsoft 文档,了解 2>nul
的解释。重定向运算符 >
必须在 上使用脱字符 ^
进行转义,以便在 Windows 命令解释器处理此命令时将其解释为文字字符 Windows执行命令 FOR 之前的行,它在后台启动的单独命令进程中执行嵌入式 dir
命令行。
DIR 到 STDOUT 的输出被 Windows 命令处理器捕获 cmd.exe
处理批处理文件并在启动后逐行处理 cmd.exe
自行关闭。
FOR 与选项 /F
忽略此处不出现的空行。默认情况下,非空行将使用普通 space 和水平制表符作为字符串分隔符拆分为子字符串。接下来将检查第一个子字符串的第一个字符是否为分号,默认情况下该分号是行尾字符,在这种情况下,该行将被忽略以进行进一步处理。否则,第一个子字符串被分配给指定的循环变量,FOR 循环体中的命令由 cmd.exe
.
行处理的默认行为由使用的选项 tokens=2
和 delims=Jj.
修改。字符串定界符用 J
和 j
和 .
重新定义,这意味着像 1.J73
这样的文件名被分成两个子字符串 1
和 73
.选项 tokens=2
指示 FOR 将第二个子字符串(标记)分配给指定的循环变量 I
。默认的 eol=;
被保留,因为在这种情况下第一个子字符串总是 1
,因此这里没有文件名被忽略。因此对于名称为 1.J73
或 1.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 /?