移动项目重命名原始项目

时间:2017-03-13 20:46:10

标签: powershell

我希望让PowerShell检查文件是否存在于两个位置 - 源文件夹和目标文件夹。如果两者都存在,我希望将ajax:beforeSend附加到目标文件,然后将源文件移动到目标位置。

我发现以下脚本有效,但它重命名源文件而不是目标文件夹中的文件。我已经搜索并厌倦了反转脚本但在所有情况下我只能让它重命名源文件。我错过了什么?

$(document).on("ajax:beforeSend", "form#messages_form", function (e, data, status, xhr) {
    var len = $.trim($('#message_body').val()).length;

    if (len > 3) {
        console.log("Send form!");
        return true;
    } else {
        console.log("Stopping request...");
        return false;
    }
});

2 个答案:

答案 0 :(得分:1)

不要修改$nextName。在移动源文件之前重命名目标文件。

if (Test-Path -LiteralPath $nextName) {
  Rename-Item -LiteralPath $nextName -NewName ($_.BaseName + "_$v" + $_.Extension)
}

$_ | Move-Item -Destination $nextName

答案 1 :(得分:0)

我自己对这一切都很陌生,但如果您有任何问题,请尝试以下内容并告诉我们?

$sourceFolder = "\\root\source\folder"
$destinationFolder = "\\root\destination\folder"    
$v = "voided"    

#Get just the file names for the items in your source folder
$filesInSource = Get-ChildItem -Path $sourceFolder -Filter *.PDF -Recurse | select Name


#join-path will stick the two variables together as a full file path
Join-Path -Path $destinationFolder -ChildPath $filesInSource | Where-Object {Test-Path $_} | ForEach-Object {
    #Renames the file in the $destinationFolder
    Rename-Item -NewName ($_.BaseName + "_$v" + $_.Extension)
    #Moves the item from the $sourceFolder into the $destinationFolder keeping original name
    Move-Item -Path (Join-Path -Path $sourceFolder -ChildPath $filesInSource) -Destination $destinationFolder
}

这看起来对我有用,但就像我说的那样,我还在学习。我试图评论它来解释每个点上发生的事情