我的任务是替换大约 10000 个文件(包括子文件夹)中的文件名中的某些字符。
所以在我的例子中我想将字符 # 更改为哈希。
我的文件位置是“C:\Users\JHB Laptop\Documents”,主文件名为测试“C:\Users\JHB Laptop\Documents\test”。
子文件夹为“C:\Users\JHB Laptop\Documents\test\New folder1\New folder2\New folder3\New folder4\New folder5”
我改编了用户 331812 Malcolm 的这段代码
{cd "C:\Users\MyName\Documents\MyDirectory"
# by default, -replace is case-insensitive (equivalent to -ireplace)
# for case-sensitive, use -creplace
Dir | Rename-Item –NewName { $_.name –replace "_"," " }}
以下是我的修正:
cd "C:\Users\JHB Laptop\Documents\test"
# by default, -replace is case-insensitive (equivalent to -ireplace)
# for case-sensitive, use -creplace
Dir | Rename-Item –NewName { $_.name –replace "#","(hash)" }
这部分工作正常,但当然会停止在字符串中的最后一个文件夹
这就是我的知识范围。我看到 -recurse 在子文件夹中发挥作用,但我无法弄清楚它在项目中的位置。
尝试:
dir -Recurse | Rename-Item –NewName { $_.name –replace "#","(hash)" }
dir
是旧的命令提示符方法。从技术上讲,它只是运行Get-ChildItem
,就像运行一样ls
。这些被称为别名(Get-Alias
)。用于help dir
获取命令帮助,它解释了-Recurse
。我喜欢这样做help dir -sh
,这将在单独的窗口中打开帮助并进行搜索,以便您可以参考它。-sh
是的缩写-ShowWindow
,因为没有其他参数/开关以sh
powershell 开头假设您的意思是ShowWindow