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

Batch file 使用windows批处理文件从文件扩展名中删除特定单词,batch-file,Batch File,我需要一些关于批处理脚本的帮助。我需要使用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*命令,但它只适用于从一个文件扩展名到另一个文件扩展名

我需要一些关于批处理脚本的帮助。我需要使用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*
命令,但它只适用于从一个文件扩展名到另一个文件扩展名的批量重命名。非常感谢您的帮助

这对您很有用

@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"
)

这对你有用

@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"

)

这也许可以简化,但你会想到:

@echo关闭
setlocal enableDelayedExpansion
对于(*\u错误*)中的%%F,请执行以下操作(
设置“名称=%%F”
ren“!name!”!name:\u错误=!”
)
对于%%F in(*错误\*)执行以下操作(
设置“名称=%%F”
ren“!name!”!name:错误=!”
)
另存为.bat或.cmd,并在与文件相同的目录中运行


(原过帐代码回滚-保留以下附录)

虽然我不愿意编辑答案,但很遗憾,现在呈现的编辑答案是一个改编版本,将为名为“…错误…”的文件生成错误报告,而原始版本没有这样做

以下是对原始帖子的改编:(按回复文本下方编辑的datetime链接查看历史)

@echo关闭
setlocal enableDelayedExpansion
对于(*\u错误**错误*)中的%%F,请执行以下操作(
设置“名称=%%F”
设置“名称=!名称:\错误=!”
ren“%%F”“!名称:错误=!”
)
我相信这是最好的编辑结果来代表的反应

现在我们对规格进行了更改。发布的文件名不是假定的文件名,只是扩展名。这应该像这样修复:

@echo关闭
setlocal ENABLEDELAYEDEXPANSION
对于%%F in(*.*u错误**.*error.*)执行以下操作(
设置“ext=%%~xF”
设置“ext=!ext:\u错误=!”
ren“%%F”“%%~nF!外部:错误=!”
)

这也许可以简化,但你会想到:

@echo关闭
setlocal enableDelayedExpansion
对于(*\u错误*)中的%%F,请执行以下操作(
设置“名称=%%F”
ren“!name!”!name:\u错误=!”
)
对于%%F in(*错误\*)执行以下操作(
设置“名称=%%F”
ren“!name!”!name:错误=!”
)
另存为.bat或.cmd,并在与文件相同的目录中运行


(原过帐代码回滚-保留以下附录)

虽然我不愿意编辑答案,但很遗憾,现在呈现的编辑答案是一个改编版本,将为名为“…错误…”的文件生成错误报告,而原始版本没有这样做

以下是对原始帖子的改编:(按回复文本下方编辑的datetime链接查看历史)

@echo关闭
setlocal enableDelayedExpansion
对于(*\u错误**错误*)中的%%F,请执行以下操作(
设置“名称=%%F”
设置“名称=!名称:\错误=!”
ren“%%F”“!名称:错误=!”
)
我相信这是最好的编辑结果来代表的反应

现在我们对规格进行了更改。发布的文件名不是假定的文件名,只是扩展名。这应该像这样修复:

@echo关闭
setlocal ENABLEDELAYEDEXPANSION
对于%%F in(*.*u错误**.*error.*)执行以下操作(
设置“ext=%%~xF”
设置“ext=!ext:\u错误=!”
ren“%%F”“%%~nF!外部:错误=!”
)


“从文件扩展名中删除特定单词”-你的意思是更改文件名吗?是的,如果你注意到所有“错误”,基本上更改文件名etcError_test_qif到test_qif,Error_test2_qif到test2_qif,Test3_Error_qif到Test3_qif字符串应该在脚本运行后显示为扩展名
.qif
,或者没有扩展名,您只是在文件名末尾使用
\u qif
“从文件扩展名中删除特定单词”-您的意思是更改文件名吗?是的,基本上更改了文件名等,Error_test2_qif to test2_qif,Test3_Error_qif to Test3_qif,如果您注意到所有的“Error”字符串都应该在脚本运行后显示为扩展名
.qif
,或者没有扩展名,而您只是在文件名末尾使用
\u qif
?我想他想从文件名中删除
Error
文本,不是每个文件的前三个字母。请在您的系统上尝试此操作..其操作相同..!:)是的。它删除了每个文件名的前三个字母!您使用的扩展名是什么?
ren“%fname%”%fname:~3%”
将只删除文件名的前三个字符。我想他想删除文件名中的
错误
文本,而不是每个文件的前三个字母。在您的系统上尝试此操作..其操作相同..!)是的。它删除了每个文件名的前三个字母!o\u o您使用的扩展名是什么?
ren“%fname%”%fname:~3%”
将只删除文件名中的前三个字符。@Magoo,我原来的答案是正确的,解决方案应该有效。有人编辑了它,然后被这个网站上许多受邓宁-克鲁格效应影响的人之一否决了。同时,它也没有给我太多的动力回来参加比赛。我没有窗户,我也不想;你所指的
…错误…
并没有告诉我任何事情,-啊,好吧,保重,伙计,干杯!嘿,我会的,谢谢你的帮助。我可能还需要你的帮助。可以保留文件扩展名前的单词。因此,基本上您的代码会更改文件名中的“error”一词。假设error\u test.error\u parse2\u qif。代码删除了所有的错误,但我希望它不影响“error_test”,只改变“@l'l”后面出现的任何错误。我相信这个表达式是“非法的非碳化硅”。是的,你的原创作品解决了当时理解的问题。毫无疑问我必须检查
for/f
是否可以与多个文件规范一起工作,并且必须对体操进行按摩才能配合。会以原来的方式工作,你会说“简化”-是的,但不会有太多争议。到那时,骑士式的变化已经发生了,但没有改变