Renameing multiple files using Get-Content

rated by 0 users
This post has 3 Replies | 1 Follower

Not Ranked
Posts 3
simoniam Posted: 01-15-2012 7:53 AM

I am attempting to rename 1000+ files with the first line of the file being renamed. 

I have never used PowerShell before but I have figured out how to do this to one file at a time with the following code:

Rename-Item -Path "C:\Users\SFranz...ens Notes\text\text1188.txt" -NewName (Get-Content -Path "C:\Users\SFranz...ens Notes\text\text1188.txt -TotalCount 1)

The file names are:

text1188.txt

text1189.txt

text1190.txt

......

text2430.txt

 

So the script must reference file a in order to rename file a, and reference file b in order to rename file b and so on.

I found a script in the library on this site.  It copies all files from one folder to another folder and if the file already exists, the script will rename the file.  I attempted to modify it to the following:

function CopyFileToFolder ([string]$Source,[string]$destination){
    # get filename
    $filename = $source.substring($source.lastindexofany("\") +1 ,$source.length - ($source.lastindexofany("\")+1))
    # verify if file exists
    if (Test-Path $destination$file) {
        $ext = Get-Content -Path $source -TotalCount 1
        Rename-Item $destination$filename $ext"."
    }
    Copy-Item $source $destination
    }
    
    $sourcefilepath = "C:\Users\SFranz...ens Notes\text\"
    $destinationpath = "C:\Users\SFranz...ens Notes\text\"
    copyFiletoFolder $sourcefilepath $destinationpath

And this is returning the following error:

Get-Content : Could not find a part of the path 'C:\Users\SFranz...ens Notes\text\'.
At line:6 char:27
+         $ext = Get-Content <<<<  -Path $source -TotalCount 1
    + CategoryInfo          : ObjectNotFound: (C:\Users\SFranz...ens Notes\text\:String) [Get-Content], DirectoryNotFoundException
    + FullyQualifiedErrorId : GetContentReaderDirectoryNotFoundError,Microsoft.PowerShell.Commands.GetContentCommand
 
Rename-Item : Cannot create a file when that file already exists.

At line:7 char:20
+         Rename-Item <<<<  $destination$filename $ext"."
    + CategoryInfo          : WriteError: (C:\Users\SFranz...ens Notes\text\:String) [Rename-Item], IOException
    + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand
 
Copy-Item : Cannot copy item C:\Users\SFranzmann.SFRANZMANN\Documents\Bens Notes\text\ onto itself.
At line:9 char:14
+     Copy-Item <<<<  $source $destination
    + CategoryInfo          : WriteError: (C:\Users\SFranz...ens Notes\text\:String) [Copy-Item], IOException
    + FullyQualifiedErrorId : CopyError,Microsoft.PowerShell.Commands.CopyItemCommand

 

Any help will be appreciated.

Sam F

 

Top 75 Contributor
Posts 17

Somehow, I doubt that the actual path contains \SFranz...ens Notes\

That appears to be a shortened version of what you want, and replacing that with what it actually is would probably get you a lot further.

Not Ranked
Posts 3

You are correct.  I am using the full path name in the actual code. However I am not receiving the desired results.  Any other ideas out there?

Not Ranked
Posts 3

I have also attempted to use the following script:

 

Get-ChildItem | Foreach { Rename-Item $_ -NewName @(Get-Content -Path $_ -totalcount 1).txt [0] }

 

This should pipe each file and rename each file with the first line of that file .txt.  One other issue I foresee is if the first line of multiple files are duplicates.  Here is my current error:

 

Rename-Item : Cannot bind argument to parameter 'NewName' because it is null.
At line:1 char:50
+ Get-ChildItem | Foreach { Rename-Item $_ -NewName <<<<  @(Get-Content -Path $_ -totalc
ount 1).txt [0] }
    + CategoryInfo          : InvalidData: (:) [Rename-Item], ParameterBindingValidatio
   nException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.
   PowerShell.Commands.RenameItemCommand

 

Again I am grateful for any help.

 

Sam F

Page 1 of 1 (4 items) | RSS
Concentrated Tech NSoftware Dell Compellent Sponsored by Idera and Concentrated Tech and NSoftware and Dell Compellent
Copyright 2011 PowerShell.com. All rights reserved.