Shorten a filename after a copy-item command


I’m copying xml files from one directory to another using Windows Task Scheduler. The xml filenames generated by a software are quite long. Is there a way to shorten the filename to 8-10 characters?

This is the command I’m using in my script to copy xml files:

 Get-ChildItem -Filter *.xml $SrcDir | Where-Object{$_.LastWriteTime -gt $LastDate} | Copy-Item -Destination $DestDir 

Thanks in advance!

Hey Richard, there are a unknowns to your question like, how are you going to derive the new file name? Is it based on the current file name? Is it just a crop of the current file name? Is it some totally new file name? Is the new file name based on current date/time? etc, etc, etc.

With that said, here is an example that just takes the first 8 characters of the existing file name to use for the rename.

Get-ChildItem -Filter *.xml $SrcDir | 
Where-Object{$_.LastWriteTime -gt $LastDate} | 
Copy-Item -Destination $DestDir -PassThru | 
Rename-Item -NewName {"$($PSItem.BaseName.substring(0,8))$($PSItem.Extension)"}