?
Solved

powershell copy and rename specific folders

Posted on 2009-04-02
3
Medium Priority
?
1,581 Views
Last Modified: 2012-06-27
Hi,
I am a Powershell newbie and I am trying to make copies of specific folders and rename them to include the date in the same root folder. The are other folders in that folder that contain a previous date.
Example:

RootFolder
      Test1
      Test2
      1_1_09 Test1
      1_1_09 Test2

I want to achieve this:

RootFolder
      Test1
      Test2
      1_1_09 Test1
      1_1_09 Test2
      <current_date> Test1
      <current_date> Test2

How can I accomplish this?

Thank you!
0
Comment
Question by:mtnnet
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 

Author Comment

by:mtnnet
ID: 24049066
I have found a script that I can modify to do what I need, but I was wondering if there is another solution.
http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_22791544.html?sfQueryTermInfo=1+10+copi+folder+powershel
0
 
LVL 9

Accepted Solution

by:
Sander Stad earned 1500 total points
ID: 24057560
I tweaked my own script a little so it suites your needs. What it does is it looks up all the folder in a specific given directory. It checks if the directory doesn't start with a number. If a result is found it renames the directory.

I assumed that the dateformat was day_month_year. You can edit this by using the "d" for the day, "M" for the month and the "y" for the year.

The script asks for a parameter. Your commandline could look like this:
powershell Myscript.ps1 -folder C:\MyfolderThatHasToBeRenamed

Here is the script

Param($folder = $(Throw "No folder given"))
 
Function RenameFolder([string]$folder){
	# Generate the lookup array
	$arrNumbers = 1..31
	# Create the dateformat
	$date = Get-Date -format "d_M_yy"
	
	# Lookup all the folders in the given directory
	$arrFolders = Get-ChildItem $folder | Where {$_.psIsContainer -eq $true} | Sort-Object {$_.FullName} -Descending
	
	# Loop through the array
	Foreach($item In $arrFolders){
		# Convert the item to a string
		[string]$i = $item
		# Get the first character from teh string
		$sub = $i.Substring(0, 1)
		
		# If the substring is not in the number array than continue
		If($arrNumbers -notcontains $sub){
			# get the old folder
			$old = $item.FullName
			# create the new folder
			$new = $folder + "\" + $date + " " + $i
			# rename the folder
			Move-Item $old $new
		
		}
	}
}
 
# Test if the given folder exists
If(Test-Path $folder){
	RenameFolders $folder
}Else{
	Throw "The path to the folder doesn't exist"
}

Open in new window

0
 

Author Comment

by:mtnnet
ID: 24060433
sstad,
Thanks for replying and taking the time to modify your script.
This script will be used to copy VMs and it will be scheduled so I can't have user imput and  I don't need to move the contents, just copy them.  If I'm not mistaking move-item $old $new would move the whole old folder to the new folder.

I have also come up with another  simpler script because I also have other folders that do not start with numbers in the root folder. (I know, I didn't mention that previously)

I will give you points for answering most of the problem and giving me some ideas on how to improve my script.

Thank You!

$date = Get-Date -format "MM_dd_yyyy"
 
$arrSource = @("test1","test2")
$arrTarget = @("$date copy_of_test1","$date copy_of_test2" )
 
for ($i=0; $i -le $arrSource.Count-1; $i++)
{
New-Item $arrTarget[$i] -itemType directory
Copy-Item ("C:\Test\" + $arrSSource[$i] + "\*") $arrTarget[$i]
}

Open in new window

0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A project that enables an administrator to perform actions within a user session context not just at the time of login but any time later on day(s) or week(s) later.
Auditing domain password hashes is a commonly overlooked but critical requirement to ensuring secure passwords practices are followed. Methods exist to extract hashes directly for a live domain however this article describes a process to extract u…
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an antispam), the admini…
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…

765 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question