Batch file 命令行批处理从其文件名中删除

Batch file 命令行批处理从其文件名中删除,batch-file,file-rename,Batch File,File Rename,我有多个文件,希望重命名其文件。 例如,我有 2014_19_24_english_test.doc 把它改成 2014 19 24英语测试.doc 以下是我迄今为止所做的工作: for /f "delims=" %%f in ('dir /b *.hwp') do ren "%%~f" "%%~nf:_= %%~xf" 这是行不通的。任何帮助都将不胜感激 克里斯我发现了,我就是这么做的: for /f "delims=" %%i in ('dir /b "*.doc"') do set LI

我有多个文件,希望重命名其文件。 例如,我有

2014_19_24_english_test.doc

把它改成

2014 19 24英语测试.doc

以下是我迄今为止所做的工作:

for /f "delims=" %%f in ('dir /b *.hwp') do ren "%%~f" "%%~nf:_= %%~xf"
这是行不通的。任何帮助都将不胜感激


克里斯

我发现了,我就是这么做的:

for /f "delims=" %%i in ('dir /b "*.doc"') do set LIST=%%i & set LIST | ren "%%~fi" "%%LIST:_= %%"

希望这有帮助。

您不能将子字符串替换语法与for变量一起使用,因此您需要一个临时变量,使用延迟扩展:

setlocal EnableDelayedExpansion
for /f "delims=" %%f in ('dir /b *.hwp') do (
    set "FNAME=%%~nf"
    ren "%%~ff" "!FNAME:_= !%%~xf"
)
endlocal