use*_*123 5 windows batch-file batch-rename
使用下面的代码,我将文本添加到文件名的末尾,它们是:
1.mp3
2.mp3
Run Code Online (Sandbox Code Playgroud)
并且应该是:
1text.mp3
2text.mp3
Run Code Online (Sandbox Code Playgroud)
但它变成了:
1.mp3text
2.mp3text
Run Code Online (Sandbox Code Playgroud)
代码:
@ECHO ON
FOR %%A IN ("C:\Users\user123\Desktop\mp3\*.mp2") DO (
CALL :RenameFiles "%%~A" "%%~NXA"
)
GOTO EOF
:RenameFiles
SET fname=%~2
SET renname=%fname=%
REN "%~1" "%renname%text%"
GOTO E
Run Code Online (Sandbox Code Playgroud)
您可以使用?至少与原始名称一样长的一系列文本,将文本添加到任何文件名的末尾(在第一个点之前,通常是扩展名的开头)。
ren "C:\Users\user123\Desktop\mp3\*.mp3" ??????????????????????text.*
Run Code Online (Sandbox Code Playgroud)
在?贪婪地比赛和蜜饯的任何字符,除了 .,并且是免费的,如果它运行的字符匹配了什么。然后附加您的文本,然后.*匹配并保留点和名称的其余部分。
您可以根据需要修改源文件掩码以匹配您想要的任何文件。源掩码完全独立于重命名掩码。
请参阅Windows RENAME 命令如何解释通配符?想要查询更多的信息。
如果您的某些文件.的名称中包含多个文件,则您不能单独使用简单的 REN 命令。一种选择是使用批处理脚本:
@echo off
pushd "C:\Users\user123\Desktop\mp3\*.mp3"
for /f "delims= eol=:" %%F in ('dir /b /a-d *.mp3') do ren "%%F" "%%~nFtext%%~xF"
popd
Run Code Online (Sandbox Code Playgroud)
请注意,使用 FOR /F 而不是简单的 FOR 至关重要。FOR /F 在开始迭代之前收集 DIR 命令的整个结果,而简单 FOR 在内部缓冲区已满后开始迭代,这增加了多次重命名同一文件的风险。
我EOL=:用来防止文件名以;. 默认的 EOL 是;,它会忽略以 开头的行;。文件名不能包含:,因此它是用于 EOL 选项的安全字符。
FOR /F 和 DIR /B 的一个小缺点是它不保留路径信息,这就是我一开始使用 PUSHD 的原因。如果没有 PUSHD,您可以在 DIR 命令中包含路径信息,但是您还需要在 REN 源掩码中包含路径。下面的一个 liner 在命令行上工作(没有批处理脚本):
for /f "delims= eol=:" %F in ('dir /b /a-d "C:\Users\user123\Desktop\mp3\*.mp3"') do @ren "C:\Users\user123\Desktop\mp3\%F" "%~nFtext%~xF"
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用 FINDSTR 命令列出文件,这样可以方便地保留路径信息:
for /f "delims=" %F in ('findstr /m "^" "C:\Users\user123\Desktop\mp3\*.mp3"') do @ren "%F" "%~nFtext%~xF"
Run Code Online (Sandbox Code Playgroud)
由于列出的每个文件都以驱动器号开头,因此使用默认的EOL=;.
最后一种选择 - 您可以使用我的JREN.BAT 正则表达式重命名实用程序。它是纯脚本(混合 JScript/批处理),可以在 XP 以后的任何 Windows 机器上本地运行。
jren "(.*)(\.mp3)$" "$1text$2" /i /p "C:\Users\user123\Desktop\mp3"
Run Code Online (Sandbox Code Playgroud)
由于 JREN 是一个批处理脚本,如果您在另一个批处理脚本中使用该命令,则需要使用 CALL JREN。
之前:1.mp3 2.mp3
之后:1text.mp3 2text.mp3
您的批处理文件中有多个错误,例如:
*.mp2应该*.mp3goto E- 标签:E丢失。call任何事。rem @echo off
setlocal
setlocal enabledelayedexpansion
for %%a in ("C:\Users\user123\Desktop\mp3\*.mp3") do (
copy "%%a" "%%~dpnatext%%~xa"
del "%%a"
)
endlocal
Run Code Online (Sandbox Code Playgroud)
笔记:
12345.mp3将重命名为12345text.mp3cmd外壳解决方案您不需要使用批处理文件。你可以只使用:
cd C:\Users\user123\Desktop\mp3\
ren ?.mp3 ?text.mp3
Run Code Online (Sandbox Code Playgroud)
或者:
ren *.mp3 ?text.mp3
Run Code Online (Sandbox Code Playgroud)
请注意,以下内容不起作用:
ren *.mp3 *text.mp3
Run Code Online (Sandbox Code Playgroud)
您将获得1.mp3text.mp3与该命令类似的文件名。
例子:
F:\test>dir *.mp3
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
29/11/2015 12:52 0 1.mp3
29/11/2015 12:52 0 2.mp3
2 File(s) 0 bytes
0 Dir(s) 1,777,665,769,472 bytes free
F:\test>ren ?.mp3 ?text.mp3
F:\test>dir *.mp3
Volume in drive F is Expansion
Volume Serial Number is 3656-BB63
Directory of F:\test
29/11/2015 12:52 0 1text.mp3
29/11/2015 12:52 0 2text.mp3
2 File(s) 0 bytes
0 Dir(s) 1,777,665,769,472 bytes free
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21719 次 |
| 最近记录: |