您好我正在尝试替换每个文件名末尾的_C。我用了 @echo关闭 REN 。 ?????????。*
这样可以正常工作,但文件名宽度可能会有所不同,那么我还能做些什么来只选择最后2个字符并重命名呢?
答案 0 :(得分:2)
您可以使用增强的环境变量扩展,例如:
%PATH:~0,-2%
将提取除PATH变量的最后2个字符之外的所有字符。 有关更多详细信息,请查看set命令的帮助。
您可以使用FOR命令将其应用于每个文件。不要忘记在内部使用延迟扩展(使用感叹号而不是百分比)。
FOR /F %I IN ('dir *.* /B') DO (
set a=%~nI
ren %I !a:~0,-2!%~xI
)
查看FOR命令的帮助以获取更多详细信息。
更新:我修改了FOR循环并创建了可用的批处理代码(包括说明注释),这也适用于包含空格的长文件名。只需将其放入.bat文件中,然后在目录中运行此批处理,您需要在其中重命名文件。 注意:在批处理文件中使用时,百分比需要加倍。
@echo off
rem use extensions and delayed expansion
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
FOR /F "tokens=*" %%I IN ('dir *.* /B') DO (
rem Skip this batch
if "%0" NEQ "%%I" (
rem show renamed file
echo %%I
rem set A to filename without extension
set A=%%~nI
rem rename file to A minus last two characters with appended extension (which includes period)
ren "%%I" "!A:~0,-2!%%~xI"
))