我试图获取有关尝试从多个文件夹名称中删除特定内容的信息。最好以这种方式将其放在批处理文件中。
例如。
在:
Test1 [REMOVEME]
Test2 [REMOVEME]
Test3 [REMOVEME]
Test4 [REMOVEME]
后:
Test1
Test2
Test3
Test4
我已经看到很多关于如何使用文件执行此操作的信息。但不是文件夹。这是否适用于批处理文件,以便以后可以轻松使用?或者我需要使用第三方软件吗?
另外。我使用的是Windows 10。
谢谢,Ben。
答案 0 :(得分:0)
使用for /d
获取匹配的foldernames,使用第二个for /f
按空格分割(在第一个空格之前取部分):
@echo off
for /d %%a in ("* [remove]") do (
for /f %%b in ("%%a") do (
ECHO ren "%%a" "%%b"
)
)
或者如果您更喜欢单线(不太灵活):
for /f "tokens=1,*" %%a in ('dir /b /ad "* [remove]"') do ECHO ren "%%a %%b" "%%a"
(对于这两个例子:当输出是你想要的时候删除ECHO
)
答案 1 :(得分:0)
可以使用PowerShell重命名目录。如果目录名称与模式匹配,Rename-Item
将执行此操作。如果您确信要正确重命名目录,请从-WhatIf
cmdlet中删除Rename-Item
。
$matchpattern = ' \[REMOVEME\]'
Get-ChildItem -Directory |
ForEach-Object {
if ($_.Name -match $matchpattern) {
Rename-Item -LiteralPath $_.FullName -NewName $($_.Name -replace $matchpattern,'') -WhatIf
}
}
或者,可以使用Filter
上的Get-ChildItem
来减少工作量。但是,这需要保持两(2)种不同的匹配模式。
Get-ChildItem -Directory -Filter '* [REMOVEME]*' |
ForEach-Object {
Rename-Item -LiteralPath $_.FullName -NewName $($_.Name -replace ' \[REMOVEME\]','') -WhatIf
}
编辑要在批处理文件中运行它,请将上面的代码放入renamepattern.ps1等文件中。然后,在批处理文件中运行它。
powershell -NoProfile -File .\renamepattern.ps1