早上好
上周开始使用powershell来处理一些小脚本,现在我被困在为重命名和移动文件创建for循环的过程中。 我有这两个命令
get-childitem "$Quellordner" | Rename-Item -NewName {$_.Name.Replace("[Index]","-")}
get-childitem "$Quellordner" | Move-Item -Force -Destination $Zielordner -Verbose *>&1 | Set-Content $Logfileordner$Logfilename
并且它们工作正常,但是不使用for循环有点奇怪。不幸的是,我无法使它起作用:/
任何帮助将不胜感激!
(PS:除了复制实际内容并将其粘贴到新行下方之外,还有其他方法可以创建降序日志文件(最新到最旧)吗?)
答案 0 :(得分:2)
您可以通过简单地扩展管道来结合重命名和移动:
Get-ChildItem -Path *.txt |
Rename-Item -NewName {$_.Name -replace "[Index]","-"} -PassThru |
Move-Item -Destination $Zielordner -Force
不直接支持写入文件的开头,这可能是因为它是一项昂贵的操作(您需要以某种方式移动所有内容以腾出空间),而且似乎更容易损坏/丢失数据。要看的一件事是按正常方式写入日志,但以相反的顺序显示。例如,Get-Content
可以将文本文件的各行读入一个数组,可以很容易地从末尾开始输出。
答案 1 :(得分:0)
您实际上已经在使用foreach
循环。 ForEach-Object
准确地说。
您的代码行:
get-childitem "$Quellordner" | Rename-Item -NewName {$_.Name.Replace("[Index]","-")}
与以下代码完全相同:
$files = get-childitem "$Quellordner"
foreach($_ in $files){
Rename-Item -NewName {$_.Name.Replace("[Index]","-")}
}
关于您的PS:据我所知,没有办法在不读取文件的情况下在文本文件的顶部添加新行,而是在顶部添加要添加的行并将其写回。
>