Powershell重命名目录中的所有文件,重命名值来自被重命名的文件

罗伯·斯坦希尔伯

好的,这就是我的挑战。我在目录中有一些文件,需要根据文件本身第一行中的值重命名。这是我到目前为止所拥有的:

$dir="c:\files"
$files=Get-ChildItem $dir|Where-Object {$_.name -like "a*.bc"} \\returns list of the files matching my pattern
foreach ($file in $files){Get-Content $file -first 1} \\returns the first line of each file.

现在的挑战是取那些行的子字符串(54,4)和(70,6)并分配变量$ val1和$ val2并使用这些值执行重命名:

Rename-Item <oldfilename> -newname <$val>+<$val2>+".pdf"

如果我不使用get-childitem而只选择一个特定的文件,则可以将第一行分配给变量,然后返回子字符串。但是,当我尝试遍历目录时,它会崩溃。

我觉得我真的很接近,但缺少一种方法,可以在运行该文件其余例程的foreach中将第一行分配给变量。

希望这是有道理的。

这是处理特定文件的过程

$firstline=Get-Content .\a123.bc -first 1
$val1=$firstline.substring(54,4)
$val2=$firstline.substring(72,4)
$newname=$val1+val2+".pdf"
Rename-Item .\a123.bc -newname $newname

结果文件就是我想要的。

伊凡·捷姆琴科(Ivan Temchenko)

尝试使用

$ files =(((Get-ChildItem $ dir).Name -like“ a * .bc”)

foreach($ files中的$ file){

$ val1 =(获取内容$ file -first 1).substring(54,4)

$ val2 =(获取内容$ file -first 1).substring(72,4)

$ newname = $ val1 + $ val2 +“ .pdf”

重命名项$ file -newname $ newname}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章