[英]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
等...
此外,這些文件不在一個文件夾中,而是在多個文件夾和子文件夾中。
操作系統是 Win 7。我期待着幫助,因為我是批處理文件的新手,並且有數百個文件要重命名以移動到不接受符號的雲解決方案。 謝謝。
幾年前,自從 powershell 出現后,我就忘記了如何使用批處理。 Powershell 有一種簡單的方法可以做到這一點。
$target = "Your Path"
Get-ChildItem -path $target -Recurse -Include *#* | rename-item -NewName { $_.name -replace '#','NO'}
-recurse 將遍歷所有文件夾,-include 將過濾其中包含 # 的文件並將其通過管道傳輸到 rename-item。 Rename-item 有一個替換功能,它只用你想要的任何東西替換指定的部分。
這個批處理文件應該這樣做:
@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
並將所有文件夾和所有包含“版本”一詞的嵌套子文件夾重命名為“v”?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.