因此已经提到REN
可以用来重命名文件夹,但不允许使用通配符。
我有一个包含几百个文件夹的目录,我想从所有文件夹名称中删除前七个字符(又名前缀)。
例如,当前文件夹名称可能是“披萨的ABC“,我想去掉“ABC 德“从文件夹名称中删除,只剩下“PIZZA”文件夹名称。
我看到了另一个答案(https://superuser.com/a/1739002/368970) 使用此命令行解决方案,该解决方案使用通配符保持基本文件夹名称不变,并在文件夹名称(又名前缀)前面添加加号:
cd "C:\Program Files\WindowsApps" for /D %a in
("Microsoft.GamingServices_*") do ren "%a" "+%a"
有人对我如何使用命令行从目录中的所有文件夹中删除前 7 个字符的前缀,但保留该 7 个字符前缀之后的所有剩余字符有什么建议吗?
答案1
使用 PowerShell,您可以轻松地使用(基于https://superuser.com/a/273220/368970):
Get-ChildItem -Directory -Recurse | rename-item -newname { [string]($_.name).substring(7) }
答案2
.bat
你可以用这个文件来完成:
setlocal EnableDelayedExpansion
for /d %%i in (*) do (
set tmp=%%i
ren "!tmp!" "!tmp:~7!"
)
解释 :
- 对于/d枚举当前目录内的文件夹
- 启用延迟扩展
导致变量在执行时扩展,并用于
!
延迟扩展 - 跳过前 7 个字符的语法在文章中有解释
在批处理文件中执行子字符串的最佳方法是什么? - 我使用临时变量是
tmp
因为在 FOR 循环内使用的子字符串语法~
不起作用。