Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell重命名文件名并保留扩展名_Powershell - Fatal编程技术网

PowerShell重命名文件名并保留扩展名

PowerShell重命名文件名并保留扩展名,powershell,Powershell,我在这里找到了我需要的代码 $files = gci -filter "*.txt" |select fullname foreach ($file in $files) { $filename = $file.fullname $newFilename = $filename.Replace(".", " ") rename-item $filename $newFilename } 我需要代码来更改文件名并保留文件扩展名。上面的代码将“.”替换为“”。我可以将其编码为再

我在这里找到了我需要的代码

$files = gci -filter "*.txt" |select fullname
foreach ($file in $files) {
   $filename = $file.fullname
   $newFilename = $filename.Replace(".", " ")
   rename-item $filename $newFilename
} 
我需要代码来更改文件名并保留文件扩展名。上面的代码将“.”替换为“”。我可以将其编码为再次重命名该文件以添加回扩展名。只是想看看有没有更好的方法


干杯

'old'
&
'new'
换成你想要的任何东西 删除
-Whatif
以应用该命令

Get-ChildItem -Path C:\temp\files -Filter *.txt | 
 Rename-Item -NewName {$_.Basename.Replace("old","new") + $_.extension} -WhatIf -Verbose

如果您已经在要重命名所有文件的目录中,而不考虑其扩展名,这应该会有所帮助

Dir | foreach{$i=1}{Rename Item$\-NewName(({0:D5}+$\.Extension)-f$i++)}

如果
foreach
之后的第一个块用作初始化块(如果跳过它,该值将从默认值0开始),
{0:D5}
表示第一个参数,其中
0
最多填充5个空格。您也可以像
{0:00000}
那样编写它,但是
D
对于十进制值来说只是更短。不用说,如果不需要任何填充,只需使用
{0}


注意:您可能需要添加
-recurse
参数(在
Dir
之后,如果您也要重命名目录的任何子文件夹中的文件。您还可以在代码末尾使用
-whatif
参数查看更改的预览。

您想将文件名更改为什么?是的,我想通过替换字符跨文件夹运行脚本来重命名文件。My code会的,但如果我想替换的话它将更改文件扩展名。我只是认为我可以使用$\ basename,但我不能。Cheers正是我在公交车上时的想法,我想使用basename。Cheers如果我想添加一些要重命名的内容,我是否可以使用与上面相同的内容执行另一行,或者我可以添加到上面。如果你想添加其他命令,那么你需要它们在一个循环中
Foreach Object
。您可以将每个命令放在一个单独的行上好的,我可以这样做,我在尝试使用“”时不断出错说它不能为空。我想用空格替换。我只是在我的系统上尝试了一下,没有出现错误。如果很难在评论中发布错误,只需打开一个带有完整命令的新问题以及错误消息。