编写批处理文件以重命名多个文件夹中的文件

时间:2016-06-30 15:04:41

标签: windows batch-file batch-rename

我正在尝试编写批处理文件来重命名文件名中带有#符号的许多文件,以便用No.替换。

即。 *#*.**No.*.* 示例是GT #3.docGT No. 3.doc所有文件都有不同的文件扩展名。即.txt.doc.docx.xls.dat.mdb等......

此外,这些文件不在一个文件夹中,而是在许多文件夹和子文件夹中。

操作系统是Win 7.我期待帮助,因为我是批处理文件的新手,并且有数百个文件需要重命名才能转移到不接受符号的云解决方案。谢谢。

3 个答案:

答案 0 :(得分:0)

自从PowerShell问世以来,几年前我忘了如何使用批处理。 Powershell有一个简单的方法。

$target = "Your Path"
Get-ChildItem -path $target -Recurse -Include *#* | rename-item -NewName { $_.name -replace '#','NO'}

-recurse将遍历所有文件夹,-include将使用#过滤文件并将其传递给rename-item。 Rename-item具有替换功能,只能用您喜欢的任何内容替换指定的部分。

答案 1 :(得分:0)

这个应该这样做:

@echo off
setlocal EnableExtensions DisableDelayedExpansion

rem // Define constants here:
set "ROOT=D:\path\to\root\folder\"
set "PATTERN=*#*.*"
set "SEARCH=#"
set "REPLAC=No. "

for /R "%ROOT%" %%I in ("%PATTERN%") do (
    set "FILENAME=%%~nI"
    setlocal EnableDelayedExpansion
    set "FILENAME=!FILENAME:%SEARCH%=%REPLAC%!"
    ren "%%~fI" "!FILENAME!%~xI"
    endlocal
)

endlocal
exit /B

答案 2 :(得分:0)

感谢aschipfl:)

您的意思是这样吗?

@echo off
setlocal EnableExtensions DisableDelayedExpansion

rem // Define constants here:
set "ROOT=D:\path\to\root\folder\"
set "PATTERN=version.exe"
set "SEARCH=version"
set "REPLAC=v"

for /R "%ROOT%" %%I in ("%PATTERN%") do (
    set "FILENAME=%%~nI"
    setlocal EnableDelayedExpansion
    set "FILENAME=!FILENAME:%SEARCH%=%REPLAC%!"
    ren "%%~fI" "!FILENAME!%~xI"
    endlocal
)

endlocal
exit /B

还要重命名所有包含单词“ version”的文件夹和所有嵌套子文件夹以更改为“ v”吗?