编写批处理文件以重命名多个文件夹中的文件
Write a batch file to rename files within multiple folders
我正在尝试编写一个批处理文件来重命名文件名中带有 #
符号的许多文件,以将其替换为 No.
。
即*#*.*
至 *No.*.*
例如 GT #3.doc
到 GT No. 3.doc
所有文件都有不同的文件扩展名。即 .txt
、.doc
、.docx
、.xls
、.dat
、.mdb
等...
此外,这些文件不在一个文件夹中,而是在多个文件夹和子文件夹中。
OS 是 Win 7。我期待得到帮助,因为我是批处理文件的新手,并且有数百个文件要重命名以移动到不接受符号的云解决方案。谢谢。
几年前powershell出来后我就忘了怎么用batch了。 Powershell 有一种简单的方法可以做到这一点。
$target = "Your Path"
Get-ChildItem -path $target -Recurse -Include *#* | rename-item -NewName { $_.name -replace '#','NO'}
-recurse 将遍历所有文件夹,-include 将过滤其中带有 # 的文件并将其通过管道传递给 rename-item。 Rename-item 有一个替换功能,可以只替换指定的部分为你想要的任何东西。
这个batch-file应该做到:
@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
感谢 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"?
我正在尝试编写一个批处理文件来重命名文件名中带有 #
符号的许多文件,以将其替换为 No.
。
即*#*.*
至 *No.*.*
例如 GT #3.doc
到 GT No. 3.doc
所有文件都有不同的文件扩展名。即 .txt
、.doc
、.docx
、.xls
、.dat
、.mdb
等...
此外,这些文件不在一个文件夹中,而是在多个文件夹和子文件夹中。
OS 是 Win 7。我期待得到帮助,因为我是批处理文件的新手,并且有数百个文件要重命名以移动到不接受符号的云解决方案。谢谢。
几年前powershell出来后我就忘了怎么用batch了。 Powershell 有一种简单的方法可以做到这一点。
$target = "Your Path"
Get-ChildItem -path $target -Recurse -Include *#* | rename-item -NewName { $_.name -replace '#','NO'}
-recurse 将遍历所有文件夹,-include 将过滤其中带有 # 的文件并将其通过管道传递给 rename-item。 Rename-item 有一个替换功能,可以只替换指定的部分为你想要的任何东西。
这个batch-file应该做到:
@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
感谢 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"?