如何通過某些批處理文件執行刪除某些字符或用其他字符替換某些字符,因爲Windows文件夾中的所有文件的文件名一次都在那裏一個DOS命令?替換或刪除文件夾中所有文件的文件名中的某些字符
回答
使用PowerShell在DOS提示符下執行任何更智能的操作。在這裏,我已經展示瞭如何批量重命名所有在當前目錄下,通過與_
下劃線代替它們包含空格的文件和目錄。
Dir |
Rename-Item -NewName { $_.Name -replace " ","_" }
編輯:
任選地,的Where-Object
命令可以用來濾波器出不合格的對象的連續小命令(命令讓)。以下是一些例子來說明的靈活性,它可以承受你:
要跳過任何文檔文件
Dir | Where-Object { $_.Name -notmatch "\.(doc|xls|ppt)x?$" } | Rename-Item -NewName { $_.Name -replace " ","_" }
僅處理目錄(預3.0版本)
Dir | Where-Object { $_.Mode -match "^d" } | Rename-Item -NewName { $_.Name -replace " ","_" }
的PowerShell 3.0引入了新的
Dir
標誌。您也可以在那裏使用Dir -Directory
。要跳過已經含有下劃線(或一些其它字符)的任何文件
Dir | Where-Object { -not $_.Name.Contains("_") } | Rename-Item -NewName { $_.Name -replace " ","_" }
我會建議rename
命令這一點。在命令行鍵入ren /?
以獲得更多幫助。
此批處理文件可以幫助,但它有一定的侷限性。文件名characters =和%不能被替換(從內存中取出),文件名中的^也可能是一個問題。
在關於在下部塊的每一行該部分%newname: =_%
它與字符:
後替換字符=
後所以,因爲它代表的字符的一串要用下劃線來代替。
取出echo
激活ren命令,因爲它只會打印命令控制檯窗口,直到你怎麼做。
它只會處理當前文件夾,除非您將/s
添加到DIR命令部分,然後它將處理當前文件夾下的所有文件夾。
要刪除一個特定的字符,從後=符號刪除字符。在%newname:z=%
這樣的條目將刪除所有z字符(不區分大小寫)。
@echo off
for /f "delims=" %%a in ('dir /a:-d /o:n /b') do call :next "%%a"
pause
GOTO:EOF
:next
set "newname=%~nx1"
set "newname=%newname: =_%"
set "newname=%newname:)=_%"
set "newname=%newname:(=_%"
set "newname=%newname:&=_%"
set "newname=%newname:^=_%"
set "newname=%newname:$=_%"
set "newname=%newname:#=_%"
set "newname=%newname:@=_%"
set "newname=%newname:!=_%"
set "newname=%newname:-=_%"
set "newname=%newname:+=_%"
set "newname=%newname:}=_%"
set "newname=%newname:{=_%"
set "newname=%newname:]=_%"
set "newname=%newname:[=_%"
set "newname=%newname:;=_%"
set "newname=%newname:'=_%"
set "newname=%newname:`=_%"
set "newname=%newname:,=_%"
echo ren %1 "%newname%
PowerShell的回答都不錯,但重命名-Item命令不會在同一目標目錄工作,除非所有的文件都在他們不想要的字符(如果發現重複則失敗)。
如果你和我一樣,有好名壞名的組合,試試這個腳本,而不是(將取代以下劃線空格):
Get-ChildItem -recurse -name | ForEach-Object { Move-Item $_ $_.replace(" ", "_") }
這個解決方案適用於我(因爲接受的答案會拋出錯誤,我認爲是由於一些文件不包含要替換的字符,正如你所提到的)。 +1,在這種情況下,我會很高興詳細解釋一下'-Recurse'標誌和'Move-Item'命令。 – j4v1
- 1. 刪除文件夾中的所有文件,排除某些文件被刪除
- 2. 替換文件夾中所有文件中的某些字符及其子文件夾
- 3. grep在所有子文件夾上迭代地替換文件中的字符串,排除某些分支
- 4. 從某個文件夾中刪除所有文件和文件夾
- 5. 如何刪除子目錄中的文件和文件夾,但跳過刪除Ruby中的某些文件名?
- 6. 刪除文件夾中文件名的最後一個字符
- 7. 刪除所有除從混帳歷史的某些文件夾
- 8. 替換Windows中所有子文件夾中的所有文件名#
- 9. 刪除名爲「已刪除」的所有文件夾中的文件
- 10. 刪除除C#中的文件以外的所有文件夾
- 11. 替換文件夾中的所有文件有許多子文件夾同名的文件使用PowerShell
- 12. 查找並替換文件夾中所有excel文件中的字符串
- 13. 腳本從一個文件夾中的所有文件的文件名中刪除字符
- 14. 刪除文件夾中的所有* .jpg
- 15. 如何在Vim中的文件夾中替換所有文件?
- 16. 刪除除了一個文件夾中的所有文件夾/文件和所有根文件
- 17. 替換文件夾上的文件名
- 18. 刪除文件夾和所有子文件夾(包括文件夾)中的所有文件
- 19. Python - 從文件夾中的所有文件中刪除重音
- 20. XSLT如何選擇文件並從文件名中刪除某些字符?
- 21. 刪除除特定文件夾以外的所有文件夾
- 22. 批處理腳本刪除文件夾中的文件不包含某些字
- 23. 從文件夾和所有包含的子文件夾中刪除txt文件
- 24. 刪除文件夾和子文件夾中的所有隱藏文件
- 25. 刪除文件夾中的所有文件和文件夾,期望以
- 26. 如何刪除除PHP文件名爲'whatever.jpg'以外的所有子文件夾中的所有文件?
- 27. 替換所有文件夾中
- 28. 刪除文件夾內的所有文件,但刪除最後?
- 29. 清除文件夾 - 刪除文件夾中的文件 - J2ME
- 30. 如何使用Python替換在幾個文件夾中包含中文字符的所有文件名?
什麼是'在哪裏,Object'的使用。 [aphoe answer](http://stackoverflow.com/a/23555996/1275574)沒有'Where-Object'做同樣的事情 – AminM
@JesonPark謝謝你指出這一點。我已經在'Where-Object'用法上添加了一些更好的例子。 –
重命名項目:源和目標路徑必須不同。錯誤:/ –