我需要一些关于批处理脚本的帮助。我需要使用windows批处理脚本从文件扩展名中删除特定的单词。等
Error_test_qif,
Error_test2_qif,
Test3_error_qif,我需要从文件名中删除"error“字符串,如下所示
Error_test_qif to test_qif,
Error_test2_qif to test2_qif,
Test3_error_qif to Test3_qif,我尝试使用ren*命令,但它只适用于从一个文件扩展名到另一个文件扩展名的批量重命名。如能提供帮助,将不胜感激。
发布于 2014-01-21 04:12:07
这可能是可以简化的,但您可以理解如下:
@echo off
setlocal enableDelayedExpansion
for %%F in (*_error*) do (
set "name=%%F"
ren "!name!" "!name:_error=!"
)
for %%F in (*error_*) do (
set "name=%%F"
ren "!name!" "!name:error_=!"
)保存为.bat或.cmd,并在与您的文件相同的目录下运行。
(原张贴代码回滚-以下增编保留)
虽然我很不愿意编辑答案,但遗憾的是,编辑后的答案是一种适应性,它将为名为“...error.”的文件生成一个错误报告。而原来并没有这样做。
下面是对原始帖子的修改:(按下历史响应文本下方的链接)
@echo off
setlocal enableDelayedExpansion
for %%F in (*_error* *error_*) do (
set "name=%%F"
SET "name=!name:_error=!"
ren "%%F" "!name:error_=!"
)我相信这是最好的编辑结果来代表回应。
现在,我们对规范进行了更改。发布的文件名不是假定的文件名,而是仅扩展。这个问题应该这样解决:
@echo off
setlocal ENABLEDELAYEDEXPANSION
for %%F in (*.*_error* *.*error_*) do (
set "ext=%%~xF"
SET "ext=!ext:_error=!"
ren "%%F" "%%~nF!ext:error_=!"
)发布于 2014-01-21 04:07:30
这对你有用..。
@echo off
SETLOCAL enabledelayedexpansion
SET "word=Error_"
IF "%word%"=="" GOTO :EOF
FOR /f "delims=" %%a IN ('dir /a-d /b "*%word%*.qif"') DO (
SET "fname=%%~na"
SET "fname=!fname:%word%=!"
IF NOT "!fname!"=="" REN "%%~a" "!fname!%%~xa")
https://stackoverflow.com/questions/21247854
复制相似问题