Как создать папку, используя имя на основе текущей даты в Powershell?

У меня есть около 50 xml-файлов, которые создаются каждый раз, когда я запускаю определенную логику. Теперь я хочу, чтобы эти 50 файлов хранились в определенной папке даты и времени. Независимо от того, сколько раз я запускаю эту логику для одной конкретной даты, файлы xml должны быть перезаписаны только для этой конкретной даты (на основе ччммсс). Проще говоря, как создать папку, используя имя на основе текущей даты, и хранить в них xml-файлы в зависимости от даты?

Например: есть 3 файла xml file_1.xml, file_2.xml и file_3.xml

Теперь я хочу, чтобы папка была создана в формате-

**xml_yyyymmdd_hhmmss** 

в них будут храниться все файлы xml.

For Eg: Xml_20121029_180912 

будет папкой, созданной на сегодняшнюю дату. И все 3 файла xml будут храниться в нем на сегодня.

На завтра имя папки будет:

Xml_20121030_170912 

Мой код выглядит следующим образом:

$location = New-Item -Path . -ItemType Directory -Name ("XML_$(Get-Date -f dd_MM_yyyy_hhmmss)")
$rptdir = "C:\Test" 
$ rptdir = ($rptdir + '\' + $location.Name)
$outputFile= "$rptdir\File_2.xml"
$row = "\\shared\Data\DevSB\CS\appSomeSystem.dll"   
& /f:$row /o:$outputFile

Ошибка вывода: не удалось найти часть пути "C:\test\XML_29_10_2012_091717\File2.xml.

Проблема здесь: папка XML_29_10_2012_091717 создается с File2.xml в ней, но не внутри C:\Test, а там, где находится скрипт.

Мне нужно, чтобы XML_29_10_2012_091717 был создан в C:\test с File2.xml внутри него.

Окружающая среда: Win Xp Professional.

Любая помощь будет принята с благодарностью.

Спасибо


person ashish g    schedule 29.10.2012    source источник


Ответы (3)


Попробуй это:

New-Item -Path . -ItemType Directory -Name ("XML_$(Get-Date -f ddMMyyyy_hhmmss)")

Изменить после комментариев:

попробуйте изменить это:

$location = New-Item -Path c:\test -ItemType Directory -Name ("XML_$(Get-Date -f dd_MM_yyyy_hhmmss)")
$outputFile= "$($location.fullname)\File_2.xml"
person CB.    schedule 29.10.2012
comment
Это вроде как работает... но у меня есть $rptDir = C:\Test. Когда я назначаю вышеуказанное переменной, скажем, $xmlLoc = New-Item -Path . -ItemType Directory -Name (XML_$(Get-Date -f ddMMyyyy_hhmmss)) и я добавляю $xmlLoc к C:\Test\$xmlLoc, он говорит, что данный формат пути не поддерживается. Как я могу добавить его? - person ashish g; 29.10.2012
comment
@ashishg Как ты это добавляешь? попробуй ($rptdir + '\' + $xmlLoc.Name ). Возвращает строку с полным путем - person CB.; 29.10.2012
comment
Я пробовал - $rptDir = C:\Test + '\' + Location.Name, а переменная, которую я устанавливаю для вывода файла xml, - это $outputFile = $rptDir\File1.xml, но все та же ошибка. А также, в этом случае создается папка xml datetime (без xml файла File1.xml в ней) в папке, где собственно находится скрипт, а не в $rptDir. - person ashish g; 29.10.2012
comment
У меня есть около 50 файлов xml, которые будут храниться в папке datetime на текущую дату. Если я попытаюсь зациклить 50 файлов... новая папка создается каждую минуту, что неизбежно. Но после удаления части времени (часть ччммсс) из папки создается папка с текущей датой, но после самого первого раза каждый раз, когда она выполняет цикл для ввода файла xml, я получаю сообщение об ошибке - папка xml уже существует, и она не может записать XML-файл в него. - person ashish g; 30.10.2012
comment
И последнее. Что, если мне нужно прочитать эти файлы Xml, созданные в папке даты, и сделать из них csv? У меня есть логика, в которой он будет читать определенный атрибут в xmls и печатать из них csv. Любая подсказка? Еще раз спасибо. :) - person ashish g; 30.10.2012
comment
@ashishg Предлагаю опубликовать новый вопрос со всеми подробностями. - person CB.; 30.10.2012
comment
Здесь есть странная проблема. Сегодня я снова запустил код, и он успешно создал папку даты (Xml_2012_10_31) со всеми файлами xml в ней, но удалил вчерашнюю папку (Xml_2012_10_30) из $ путь rptdir. Как я могу гарантировать, что предыдущие папки останутся нетронутыми? - person ashish g; 31.10.2012
comment
@ashishg, не видя полного кода, я могу помочь вам в этом. Мне жаль. - person CB.; 31.10.2012

Полная версия:

New-Item -Path . -ItemType Directory -Name (Get-Date -f dd_MM_yyyy)

Вы также можете использовать md или mkdir

md (Get-Date -f dd_MM_yyyy)
person Shay Levy    schedule 29.10.2012

$location = New-Item -Path $rptdir -ItemType Directory **-force** -Name ("XML_$(Get-Date -f dd_MM_yyyy_hhmmss)")

Как насчет того, чтобы добавить сюда команду -force cmd-let?

person ashish g    schedule 30.10.2012