gpt4 book ai didi

powershell - 如何写主机来控制台所有已移动的文件名

转载 作者:行者123 更新时间:2023-12-03 01:04:54 25 4
gpt4 key购买 nike

我试图将在以下作业中移动的所有文件名登录到控制台。如果我将$file$files放在写主机之后,它将记录完整路径并仅指示*.pdf已移动。我试图将已移动的每个文件名登录到控制台。下面是我的脚本。任何帮助将非常感激。

# Move the printed pdfs to an archive location
$files = "\\fileLocation\Express\*.pdf"

foreach ($file in $files)
{
try
{
# Move all the files
move-item $files -Destination '\\networkShare\Archive\express' -Force

# Output the logging in the console
Write-Host ("The file " + $file.$_.Name + " has been moved")
}
catch
{
Write-Host ($file.$_.Name + $_.Exception.message)
}
}

最佳答案

$files是一个字符串。您的for不知道它是路径还是任何特殊的东西。您似乎将其视为文件对象

如果要列出所有文件,则需要首先枚举这些路径,以便循环可以单独处理每个文件。

注意:,在您的循环中,您有Move-Item $ files,这些文件会使水浑浊。您想使用$file,但仍然无法按预期的方式工作。

foreach ($file in (Get-ChildItem "c:\temp" -Filter "*.pdf")){
try {
# Move all the files
move-item $file -Destination '\\networkShare\Archive\express' -Force

# Output the logging in the console
Write-Host ("The file " + $file.Name + " has been moved")
} catch {
Write-Host ($file.Name + $_.Exception.message)
}
}

这将在循环传递期间处理每个文件。

老实说,如果您想要更多详细的输出,例如robocopy可以在开箱即用的更多信息中完成。
robocopy "\\fileLocation\Express\" '\\networkShare\Archive\express' '*.pdf' /MOV

您可以通过 robocopy /?Doc.Microsoft对此进行更多研究

关于powershell - 如何写主机来控制台所有已移动的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50743168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com