Скрипт Powershell не создает папку с помощью функции mkdir - PullRequest
1 голос
/ 15 марта 2019

Я ищу создание ежедневных папок, используя скрипт Powershell, и хотя первые две папки создаются без проблем, третья папка в моем списке не создается.Ниже приведен мой код, и это папка Raw Data, которая по какой-то причине не создается - какие-либо предложения относительно того, почему это может происходить?

$months = Get-Date -UFormat %b
$monthl = Get-Date -UFormat %B
$year = Get-Date -UFormat %Y
$timestamp = Get-Date -UFormat "%d%m%Y"
$folderstamp = Get-Date -UFormat "%d-%m-%Y"

mkdir "X:\Client Services & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_AML\$folderstamp"
mkdir "X:\Client Services & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_AML\$folderstamp\Final Output"
mkdir "X:\Client Services & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_AML\$folderstamp\Raw Data"

Если я напишу эту строку кода на самом Powershell,возвращает дату LastWriteTime 01.01.1601 ?!Смотрите ссылку на скриншот ниже.Кажется, режим показывает все возможные режимы?

скриншот powershell

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

По какой-либо причине (возможно, слово Raw?), Замена пробела в имени нового каталога на подчеркивание сработало, т. Е. «Raw_Data» вместо «Raw Data», поэтому я расскажу об этом для других ежедневных работ, которые мыпроцесс, который использует похожую структуру папок.

Спасибо Тео за код более аккуратный!

$now         = Get-Date
$months      = $now.ToString("MMM")
$monthl      = $now.ToString("MMMM")
$year        = $now.Year
$timestamp   = $now.ToString("ddMMyyyy")
$folderstamp = $now.ToString("dd-MM-yyyy")

$folderName = "X:\Client Services & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_AML\$folderstamp"
try {
New-Item -ItemType Directory -Path $folderName -ErrorAction Stop | Out-Null
New-Item -ItemType Directory -Path (Join-Path -Path $folderName -ChildPath 'Final_Output') -ErrorAction Stop | Out-Null
New-Item -ItemType Directory -Path (Join-Path -Path $folderName -ChildPath 'Raw_Data') -ErrorAction Stop | Out-Null
}
catch {
Write-Error $_.Exception.Message
}
0 голосов
/ 15 марта 2019

Из вашего скриншота видно, что папка Raw Data действительно существует.В разделе Mode вы можете увидеть его атрибуты:

d - Directory
a - Archive
r - Read-only
h - Hidden
s - System
l - Reparse point, symlink, etc.

Может быть, вам следует еще раз изучить эту папку (или ссылку), чтобы выяснить, почему она есть и является ли она символической ссылкой, где он указывает.

В любом случае, вот ваш код в стиле PowerShell:

$now         = Get-Date
$months      = $now.ToString("MMM")
$monthl      = $now.ToString("MMMM")
$year        = $now.Year
$timestamp   = $now.ToString("ddMMyyyy")
$folderstamp = $now.ToString("dd-MM-yyyy")

$folderName = "X:\Client Services & Fulfilment\Fulfilment\CMS\$year\$monthl $year\Investec_AML\$folderstamp"
try {
    New-Item -ItemType Directory -Path $folderName -ErrorAction Stop | Out-Null
    New-Item -ItemType Directory -Path (Join-Path -Path $folderName -ChildPath 'Final Output') -ErrorAction Stop | Out-Null
    New-Item -ItemType Directory -Path (Join-Path -Path $folderName -ChildPath 'Raw Data') -ErrorAction Stop | Out-Null
}
catch {
    Write-Error $_.Exception.Message
}

Надеюсь, это поможет

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