簡體   English   中英

編寫批處理文件以重命名多個文件夾中的文件

[英]Write a batch file to rename files within multiple folders

我正在嘗試編寫一個批處理文件來重命名許多文件,文件名中帶有#號的文件將被替換為No.

*#*.**No.*.*示例是GT #3.docGT 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM