我对Powershell相当陌生,对我收到的错误有疑问。浏览堆栈溢出后,我发现用户在拼写等方面出错,因此找不到适合我问题的答案。
我有一个脚本运行一些数据的备份并将其压缩并存储为:
yyyyMMdd sometext .7z
我还有另一个脚本来获取最新备份(如果已创建)并将其复制到另一个位置
我收到错误
copy-item无法将参数绑定到参数'path',因为它为空
这是否表示文件不存在或以下任何错误?
$c = $textBox.Text
$a = (Get-Date).AddDays(-1).ToString($c)
$b = Get-ChildItem "C:\BackupsRP1" -Filter *.7z | Where-Object BaseName -like "*$a*"
Copy-Item $b -Destination "C:\Users\user\Desktop"
代码上方是一个简单的GUI,供用户以yyyyMMdd格式输入日期,它将比用户输入的日期少找到文件并将其复制到该位置。
谢谢你, J
答案 0 :(得分:1)
# This will copy each of the files that
Get-ChildItem "C:\BackupsRP1" -Filter *.7z | where BaseName -like "*$a*" | Copy-Item -Destination "C:\Users\user\Desktop" -PassThru
可能包含多个文件,甚至可能根本没有,这取决于您的过滤器找到的内容。
正确的原因:
$a
这将复制所有与过滤器匹配的项目,然后将复制的文件输出到控制台。
此外,请确保pow
确实包含您想要的内容。 (我不知道,因为我不知道您的文本框中的内容。)
答案 1 :(得分:0)
您必须确保变量中的值与预期的一样,您可以添加日志记录以进行调试。
$c = $textBox.Text
$c > c:\temp\Debug.log
$a = (Get-Date).AddDays(-1).ToString($c)
$a >> c:\temp\Debug.log
$b = Get-ChildItem "C:\BackupsRP1" -Filter *.7z | Where-Object BaseName -like "*$a*"
$b >> c:\temp\Debug.log
Copy-Item $b.FullName -Destination "C:\Users\user\Desktop"
$ b将包含FileInfo对象,您必须从该对象中选择fullname属性(文件的完整路径)。