Move-Item Не удалось найти часть пути DirectoryNotFoundException - PullRequest
0 голосов
/ 06 апреля 2020

Я получаю следующую ошибку с этим сценарием: Move-Item: Could not find part of the path DirectoryNotFoundException.

#<BEGIN_SCRIPT>#
cls
#----- define parameters -----#

#----- define folder where files are located ----#
$MoveFolderLocation ='.\Move_Folder_Input.csv'
$MoveFolderLocation = Read-Host "Where is the folder list file?"
$MoveFolder = Get-Content -path $MoveFolderLocation
write-host "Target Folders Being Moved: " $MoveFolder

#----- define where to move folders ----#
$LocationFolderMove = '\\file location'


#----- define location of log file ----#
$LogFile = ".\logfile.log"
$LogFile = Read-Host "Where would you like to put the log file?"
$LogFile

#---- Define Log Location ----#
$DoesLogFileExist = Test-Path -Path $LogFile

#---- Create The Log File and Put Headers In It ----#
IF($DoesLogFileExist)
    {

        Clear-Content $LogFile
        "Folder_Moved,IsFolderAtOriginalLocation" | Out-File $LogFile 
    }
ELSE
    {
        "Folder_Moved,IsFolderAtOriginalLocation" | Out-File $LogFile 
    }



#----- get folder to move to another location ---#

foreach ($Folder in $MoveFolder)

{
write-host "Folder is: "$Folder


 $FolderToBeDeleted = $Folder


            IF (!(Test-Path -path $LocationFolderMove=)) 
         #    IF ($Folder)   
              {
                  write-host "Moving Folder $Folder" -ForegroundColor "Red"
                  Move-Item -LiteralPath $FolderToBeDeleted -Destination $LocationFolderMove -force
                  $HasMoved = Test-Path -Path $Folder
                  $FolderMoved = $Folder
                  "$FolderMoved,$HasMoved" | Out-File $LogFile -Append 
              }  



}

Write-Host "Folder move cleanup complete. No more folders to move!" -foregroundcolor "Green"

1 Ответ

1 голос
/ 07 апреля 2020

Всегда создавайте свой скрипт по одному шагу за раз и проверяйте, что вы получаете то, что ожидаете.

Например. Почему вы используете одну и ту же переменную для двух разных целей?

$MoveFolderLocation = '.\Move_Folder_Input.csv'
$MoveFolderLocation = Read-Host "Where is the folder list file?"

Вы перезаписываете одну на другую, а последняя выигрывает.

Я согласен с Тео в этом Хост вещь. Мое правило по умолчанию для Dev / Script # 1:

  • 'Все вводные данные являются злыми, пока они не будут полностью проверены, независимо от того, откуда они поступают.'

Итак, измените что Read-Host для чего-то вроде.

($FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{ 
    InitialDirectory = [Environment]::GetFolderPath('MyDocuments') 
}).ShowDialog() | Out-Null
$FileBrowser.FileName

Даже при усилиях браузера вам все равно необходимо учитывать файлы / папки с пробелами, специальные символы и т. д. c. иметь дело с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...