程序在运行的时候,老是因为名字有空格导致报错,可以用powershell写个程序,检查该目录下所有文件夹的名称,遇到有空格的就重命名文件夹,把文件夹名称里面的空格删掉。
Get-ChildItem -Directory | ForEach-Object {
$newName = $_.Name -replace " ", "" # 去掉空格
if ($_.Name -ne $newName) { # 只有当名称有空格时才改名
Rename-Item -Path $_.FullName -NewName $newName
Write-Host "重命名: '$($_.Name)' → '$newName'"
}
}
另存为clcfolderspace.ps1
如果想空格替换成下划线_,用
Get-ChildItem -Directory | ForEach-Object {
$newName = $_.Name -replace " ", "_"
if ($_.Name -ne $newName) {
Rename-Item -Path $_.FullName -NewName $newName
Write-Host "重命名: '$($_.Name)' → '$newName'"
}
}
另存为repfolderspace.ps1
想删多一点,比如删除空格、圆括号 () 和方括号 [],用
Get-ChildItem -Directory | ForEach-Object {
$newName = $_.Name -replace "[\s\(\)\[\]]", "" # 删除空格和括号
if ($_.Name -ne $newName) {
Rename-Item -Path $_.FullName -NewName $newName
Write-Host "重命名: '$($_.Name)' → '$newName'"
}
}
另存为clcfoldersymbol.ps1
如果不是文件夹,而是各种全类型文件,用
Get-ChildItem -File | ForEach-Object {
$newName = $_.Name -replace " ", "" # 去掉空格
if ($_.Name -ne $newName) { # 只有当名称有空格时才改名
Rename-Item -Path $_.FullName -NewName $newName
Write-Host "重命名: '$($_.Name)' → '$newName'"
}
}
另存为clcfilenamespace.ps1
如果不分文件和文件夹,只要是当前目录下都干掉,用
Get-ChildItem | ForEach-Object {
$newName = $_.Name -replace " ", "" # 去掉空格
if ($_.Name -ne $newName) {
Rename-Item -Path $_.FullName -NewName $newName
Write-Host "重命名: '$($_.Name)' → '$newName'"
}
}
另存为clcallnamespace.ps1
如果想对当前目录下所有文件和文件夹名上用 _ 替换空格,而不是删除:
Get-ChildItem | ForEach-Object {
$newName = $_.Name -replace " ", "_"
if ($_.Name -ne $newName) {
Rename-Item -Path $_.FullName -NewName $newName
Write-Host "重命名: '$($_.Name)' → '$newName'"
}
}
另存为repallnamespace.ps1
如果你希望 不仅仅是当前目录,而是包括所有子文件夹里的文件,可以用:
Get-ChildItem -File -Recurse | ForEach-Object {
$newName = $_.Name -replace " ", ""
if ($_.Name -ne $newName) {
Rename-Item -Path $_.FullName -NewName $newName
Write-Host "重命名: '$($_.Name)' → '$newName'"
}
}
另存为clcallallnamespace.ps1
还有两种,是删全部下面的文件夹的名字和文件的名字,以及删全部下面的文件夹的名字而不删文件的,
只是一个函数的参数
修改所有文件名称(包括子目录中的文件) `Get-ChildItem -File -Recurse
修改所有文件和文件夹名称(递归) `Get-ChildItem -Recurse
只修改文件夹的名称(递归) `Get-ChildItem -Directory -Recurse
就是 -File -Directory -Recurse
加-File就是只改文件名,加-Directory就是只改文件夹名,都不加就是文件名和文件夹名都改;
加-Recurse是递归处理子目录,不加就是仅处理当前目录,
避免复制下来粘贴会报错,上传一个ps1文件,其他都在上面改了存就好用。