首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用windows批处理文件从文件扩展名中删除特定单词

使用windows批处理文件从文件扩展名中删除特定单词
EN

Stack Overflow用户
提问于 2014-01-21 02:10:37
回答 2查看 1.7K关注 0票数 1

我需要一些关于批处理脚本的帮助。我需要使用windows批处理脚本从文件扩展名中删除特定的单词。等

代码语言:javascript
复制
Error_test_qif,
Error_test2_qif,
Test3_error_qif,

我需要从文件名中删除"error“字符串,如下所示

代码语言:javascript
复制
Error_test_qif to test_qif,
Error_test2_qif to test2_qif,
Test3_error_qif to Test3_qif,

我尝试使用ren*命令,但它只适用于从一个文件扩展名到另一个文件扩展名的批量重命名。如能提供帮助,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-21 04:12:07

这可能是可以简化的,但您可以理解如下:

代码语言:javascript
复制
@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.”的文件生成一个错误报告。而原来并没有这样做。

下面是对原始帖子的修改:(按下历史响应文本下方的链接)

代码语言:javascript
复制
@echo off
setlocal enableDelayedExpansion
for %%F in (*_error* *error_*) do (
  set "name=%%F"
  SET "name=!name:_error=!"
  ren "%%F" "!name:error_=!"
)

我相信这是最好的编辑结果来代表回应。

现在,我们对规范进行了更改。发布的文件名不是假定的文件名,而是仅扩展。这个问题应该这样解决:

代码语言:javascript
复制
@echo off
setlocal ENABLEDELAYEDEXPANSION
for %%F in (*.*_error* *.*error_*) do (
  set "ext=%%~xF"
  SET "ext=!ext:_error=!"
  ren "%%F" "%%~nF!ext:error_=!"
)
票数 4
EN

Stack Overflow用户

发布于 2014-01-21 04:07:30

这对你有用..。

代码语言:javascript
复制
@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"

)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21247854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档