好的,这就是我的挑战。我在目录中有一些文件,需要根据文件本身第一行中的值重命名。这是我到目前为止所拥有的:
$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
结果文件就是我想要的。
尝试使用
$ 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] 删除。
我来说两句