Solved

powershell copy and rename specific folders

Posted on 2009-04-02
3
1,472 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
  • 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 500 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Set OWA language and time zone in Exchange for individuals, all users or per database.
This article will help you understand what HashTables are and how to use them in PowerShell.
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

864 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

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now