我有一个脚本(粘贴在下面)应该执行以下操作:
它正在执行步骤#1和#2但是步骤#3,Move-Item没有移动任何文件,我不知道为什么,我没有得到错误的指示
有人可以帮忙吗?感谢
$source = "C:\Users\Tom\"
$source_move = "C:\Users\Tom\OldLogBackup1\"
$destination ="C:\Users\Tom\Mirror\"
if(-not(Test-Path $destination)){mkdir $destination | out-null}
ForEach ($sourcefile In $(Get-ChildItem $source | Where-Object { $_.Name -match "Daily_Reviews\[\d\d\d\d-\d\d\d\d\].journal" }))
{
#escape filename because there are brackets in the name!
$src = [Management.Automation.WildcardPattern]::Escape($sourcefile)
Copy-Item $src $destination
### Check for a successful file copy
if($?)
{
####
if(-not(Test-Path $source_move)){
echo "Path does not exist!"
} else {
echo "Path exists!"
### Move original source file someplace else
Move-Item $source_move$sourcefile $source_move
if($?)
{
echo "Source file successfully moved"
} else {
echo "Source file was not successfully moved"
}
}
}
答案 0 :(得分:0)
尝试使用-force
选项。
答案 1 :(得分:0)
行Move-Item $source_move$sourcefile $source_move
正在将$sourcefile
目录中的$source_move
移动到$source_move
目录,该目录不执行任何操作。我猜你打算做Move-Item $source$sourcefile $source_move
或Move-Item $src $source_move
。
此外,echo
只是Write-Output
的别名,它将参数返回给调用者。您可以在没有回声的情况下获得相同的结果(将返回任何对象本身)。或者,如果您打算将这些用作调试语句,则可以使用Write-Debug
或Write-Host
。