Powershell 如何重命名目录中的多个文件?
我在目录中有许多文件,名称如下Powershell 如何重命名目录中的多个文件?,powershell,batch-file,scripting,Powershell,Batch File,Scripting,我在目录中有许多文件,名称如下 injector.cpython-33.pyo PregnancyMegaMod.cpython-33.pyo 我需要从它们身上剪下.cpython-33一块,即重命名后的文件必须像这样 injector.pyo PregnancyMegaMod.pyo 如何编写批处理文件或PowerShell脚本?解决方案是 Get-ChildItem -Filter "*.pyo" -Recurse | Rename-Item -NewName {$_.name -rep
injector.cpython-33.pyo
PregnancyMegaMod.cpython-33.pyo
我需要从它们身上剪下.cpython-33
一块,即重命名后的文件必须像这样
injector.pyo
PregnancyMegaMod.pyo
如何编写批处理文件或PowerShell脚本?解决方案是
Get-ChildItem -Filter "*.pyo" -Recurse | Rename-Item -NewName {$_.name -replace '.cpython-33','' }
假设所有文件都没有额外的点(换句话说,没有像“a.b.cpython-33.pyo”这样的文件),那么您可以使用如下内容:
ren *.cpython-33.pyo" "??????????????????????????????????????????.pyo"
在.cpython=33.pyo“
之前,必须有与最长名称一样多的?
。有关详细信息,请参阅
如果可能有额外的点,那么您可以使用my-一种混合JScript/批处理脚本,它使用正则表达式替换执行重命名操作。它是从XP开始在任何Windows机器上本机运行的纯脚本
jren "\.cpython-33\.pyo$" ".pyo" /i
@ECHO关闭
SETLOCAL
设置“sourcedir=U:\sourcedir”
对于(“%sourcedir%\*.pyo”)中的%%a,对于(“%%~na”)中的%%b,如果/i“%%~xb”==”.cpython-33”ECHO(REN“%%~fa”%%~nb.pyo”,则执行
后藤:EOF
您需要更改sourcedir
的设置以适应您的环境
所需的REN命令仅用于测试目的。ECHO
ed。验证命令正确后,将ECHO(REN
更改为REN
以实际重命名文件
显然,该方法的关键是%%a行的
对于与所选目录中的掩码匹配的每个文件,获取名称部分,并使用该名称部分提取“名称”部分部分是所需的字符串,然后生成重命名命令。您要求使用DOS。可能需要标记PowerScript并要求使用它,您需要一些时间来学习它,但我认为您会从中受益。DOSREN
命令无法处理此问题。您使用的是长文件名,这表明您在Windows上,这表明PowerShell可用。是吗?没有区别,dos或PS…所有方法都是可能的…这是PowerShell中的一行程序,但根据合同,除非您正确标记并提出问题,否则我们无法帮助您。如果您想知道如何在PowerShell中执行此操作,请相应地编辑您的问题。否则,一些可怜的灵魂将不得不通过批处理文件来完成此操作。的版本文章完成了。非常好,甚至比我想的还要短。:-)您可能想使用“*.cpython-33.pyo”
作为过滤器,否则它将毫无意义地尝试重命名已经正常的文件。非常好!接受您自己的答案,这样问题将按回答进行筛选。您可以使用“%sourcedir%\*.cpython-33.pyo”
在第一个FOR语句中。该文件掩码不能与短的8.3名称匹配,因此应该是安全的。