Windows Vista Forums

Batch rename of files

  1. #1


    robm_jnb Guest

    Batch rename of files

    Hi everyone,

    I have a problem in that I need to compose a PowerShell script to rename
    about 200 files. These files are the in the example format:

    sample pdf document.pdf_(2008-05-24_04-16-15_DEL_T).pdf

    Basically I need the script to just leave the file name, and get rid of the
    jibberish. So after running it should rename the file to:

    sample pdf document.pdf

    I have looked at both regular expressions and the trim function, but have
    not got very far. I would really appreciate any help that people can give.

    Thanks in advance.

      My System SpecsSystem Spec

  2. #2


    Tao Ma Guest

    Re: Batch rename of files

    Hi robm_jnb,

    Try:
    Get-Item *.pdf | % { Move-Item -Whatif $_ ($_.Name -replace 'pdf.*?pdf$') }

    If it works like you wish, remove '-Whatif' to let it get the work done.

    "robm_jnb" <robm_jnb@xxxxxx> 写入消息新闻:16B5EFB4-CB81-4D44-BFEB-1B31E9B44B5F@xxxxxx

    > Hi everyone,
    >
    > I have a problem in that I need to compose a PowerShell script to rename
    > about 200 files. These files are the in the example format:
    >
    > sample pdf document.pdf_(2008-05-24_04-16-15_DEL_T).pdf
    >
    > Basically I need the script to just leave the file name, and get rid of
    > the
    > jibberish. So after running it should rename the file to:
    >
    > sample pdf document.pdf
    >
    > I have looked at both regular expressions and the trim function, but have
    > not got very far. I would really appreciate any help that people can give.
    >
    > Thanks in advance.


      My System SpecsSystem Spec

  3. #3


    Kiron Guest

    Re: Batch rename of files

    Hi Rob,
    # If this suffices...
    'sample pdf document.pdf_(2008-05-24_04-16-15_DEL_T).pdf'.split('_')[0]

    # you can do:
    # (using -wi to test, remove it to rename the files if satisfied)
    ls $dir | ? {!$_.psIsContainer} | rni -new {$_.name.split('_')[0]} -wi

    # or...
    ls $dir *.pdf | rni -new {$_.name.split('_')[0]} -wi

    --
    Kiron

      My System SpecsSystem Spec

  4. #4


    Kiron Guest

    Re: Batch rename of files

    Oops! Bad copy 'n' paste from my part:

    # using -Replace operator and a short RegEx
    'sample pdf document.pdf_(2008-05-24_04-16-15_DEL_T).pdf' -replace '_.+$'

    # different extensions
    ls $dir | ? {!$_.psIsContainer} | rni -new {$_.name -replace '_.+$'} -wi

    # only PDF files
    ls $dir *.pdf | rni -new {$_.name -replace '_.+$'} -wi

    --
    Kiron

      My System SpecsSystem Spec

  5. #5


    robm_jnb Guest

    Re: Batch rename of files

    That was a great help, thanks for that. I have changed the script slightly:

    Get-ChildItem -recurse -include *.* | % { Rename-Item -WhatIf $_($_.Name
    -replace 'pdf.*?pdf$') }

    Do you know if it would be possible to extract the file extension off the
    end of the file name? Due to the files being renamed are of different
    extensions, it would be handy if the script logically knew the extension and
    stored it into a variable. So, does anyone know how to extract the last 4
    characters and store it in a variable?

    "Tao Ma" wrote:

    > Hi robm_jnb,
    >
    > Try:
    > Get-Item *.pdf | % { Move-Item -Whatif $_ ($_.Name -replace 'pdf.*?pdf$') }
    >
    > If it works like you wish, remove '-Whatif' to let it get the work done.
    >
    > "robm_jnb" <robm_jnb@xxxxxx> 脨麓脠毛脧没脧垄脨脗脦脜:16B5EFB4-CB81-4D44-BFEB-1B31E9B44B5F@xxxxxx

    > > Hi everyone,
    > >
    > > I have a problem in that I need to compose a PowerShell script to rename
    > > about 200 files. These files are the in the example format:
    > >
    > > sample pdf document.pdf_(2008-05-24_04-16-15_DEL_T).pdf
    > >
    > > Basically I need the script to just leave the file name, and get rid of
    > > the
    > > jibberish. So after running it should rename the file to:
    > >
    > > sample pdf document.pdf
    > >
    > > I have looked at both regular expressions and the trim function, but have
    > > not got very far. I would really appreciate any help that people can give.
    > >
    > > Thanks in advance.
    >
    >
    >

      My System SpecsSystem Spec

  6. #6


    Tao Ma Guest

    Re: Batch rename of files

    Hi,

    $_.Extension contains the file extension.
    $_.BaseName contains the filename without extension.
    I assume that there is only one 'dot' in the BaseName.

    Before removing '-Whatif' parameter, please check the outputs carefully.

    Get-ChildItem -Recurse | ?{ ! $_.PSIsContainer } | %{ Rename-Item -Whatif
    $_.FullName ( ($_.BaseName -replace '\.[^.]*$') + $_.Extension) }

    Tao Ma

    "robm_jnb" <robmjnb@xxxxxx> 写入消息新闻:919D2E64-F683-4655-AEC8-FF084F0C7FC0@xxxxxx

    > That was a great help, thanks for that. I have changed the script
    > slightly:
    >
    > Get-ChildItem -recurse -include *.* | % { Rename-Item -WhatIf $_($_.Name
    > -replace 'pdf.*?pdf$') }
    >
    > Do you know if it would be possible to extract the file extension off the
    > end of the file name? Due to the files being renamed are of different
    > extensions, it would be handy if the script logically knew the extension
    > and
    > stored it into a variable. So, does anyone know how to extract the last 4
    > characters and store it in a variable?
    >
    > "Tao Ma" wrote:
    >

    >> Hi robm_jnb,
    >>
    >> Try:
    >> Get-Item *.pdf | % { Move-Item -Whatif $_ ($_.Name -replace
    >> 'pdf.*?pdf$') }
    >>
    >> If it works like you wish, remove '-Whatif' to let it get the work done.
    >>
    >> "robm_jnb" <robm_jnb@xxxxxx> D′è????¢D???:16B5EFB4-CB81-4D44-BFEB-1B31E9B44B5F@xxxxxx

    >> > Hi everyone,
    >> >
    >> > I have a problem in that I need to compose a PowerShell script to
    >> > rename
    >> > about 200 files. These files are the in the example format:
    >> >
    >> > sample pdf document.pdf_(2008-05-24_04-16-15_DEL_T).pdf
    >> >
    >> > Basically I need the script to just leave the file name, and get rid of
    >> > the
    >> > jibberish. So after running it should rename the file to:
    >> >
    >> > sample pdf document.pdf
    >> >
    >> > I have looked at both regular expressions and the trim function, but
    >> > have
    >> > not got very far. I would really appreciate any help that people can
    >> > give.
    >> >
    >> > Thanks in advance.
    >>
    >>
    >>


      My System SpecsSystem Spec

  7. #7


    robm_jnb Guest

    Re: Batch rename of files

    Thanks for your reply - I have taken your script and modified it to this:

    get-childitem -recurse | where-object {$_.Name -match "_DEL_T"} | ?
    {!$_.psIsContainer} | rni -new {$_.name -replace "_\(.+$"} -wi

    Thanks for all your help - I couldn't have done it without you.

    "Tao Ma" wrote:

    > Hi,
    >
    > $_.Extension contains the file extension.
    > $_.BaseName contains the filename without extension.
    > I assume that there is only one 'dot' in the BaseName.
    >
    > Before removing '-Whatif' parameter, please check the outputs carefully.
    >
    > Get-ChildItem -Recurse | ?{ ! $_.PSIsContainer } | %{ Rename-Item -Whatif
    > $_.FullName ( ($_.BaseName -replace '\.[^.]*$') + $_.Extension) }
    >
    > Tao Ma
    >
    > "robm_jnb" <robmjnb@xxxxxx> 脨麓脠毛脧没脧垄脨脗脦脜:919D2E64-F683-4655-AEC8-FF084F0C7FC0@xxxxxx

    > > That was a great help, thanks for that. I have changed the script
    > > slightly:
    > >
    > > Get-ChildItem -recurse -include *.* | % { Rename-Item -WhatIf $_($_.Name
    > > -replace 'pdf.*?pdf$') }
    > >
    > > Do you know if it would be possible to extract the file extension off the
    > > end of the file name? Due to the files being renamed are of different
    > > extensions, it would be handy if the script logically knew the extension
    > > and
    > > stored it into a variable. So, does anyone know how to extract the last 4
    > > characters and store it in a variable?
    > >
    > > "Tao Ma" wrote:
    > >

    > >> Hi robm_jnb,
    > >>
    > >> Try:
    > >> Get-Item *.pdf | % { Move-Item -Whatif $_ ($_.Name -replace
    > >> 'pdf.*?pdf$') }
    > >>
    > >> If it works like you wish, remove '-Whatif' to let it get the work done.
    > >>
    > >> "robm_jnb" <robm_jnb@xxxxxx> D隆盲篓篓????隆茅D???:16B5EFB4-CB81-4D44-BFEB-1B31E9B44B5F@xxxxxx
    > >> > Hi everyone,
    > >> >
    > >> > I have a problem in that I need to compose a PowerShell script to
    > >> > rename
    > >> > about 200 files. These files are the in the example format:
    > >> >
    > >> > sample pdf document.pdf_(2008-05-24_04-16-15_DEL_T).pdf
    > >> >
    > >> > Basically I need the script to just leave the file name, and get rid of
    > >> > the
    > >> > jibberish. So after running it should rename the file to:
    > >> >
    > >> > sample pdf document.pdf
    > >> >
    > >> > I have looked at both regular expressions and the trim function, but
    > >> > have
    > >> > not got very far. I would really appreciate any help that people can
    > >> > give.
    > >> >
    > >> > Thanks in advance.
    > >>
    > >>
    > >>
    >
    >
    >

      My System SpecsSystem Spec

Batch rename of files

Similar Threads
Thread Forum
batch rename files with same prefix
Some days ago, I found this convenient trick under Vista: To rename: good_stuff_01.jpg good_stuff_02.jpg good_stuff_03.jpg as:
General Discussion
Help with IF in batch files
Here is the code: @ echo off set /p file=File to delete: if "%file%" == "*.exe" goto kill if exist "%file%" goto del echo File does not exist...
General Discussion
In Vista, can .wps files be converted to .rtf files as a batch i.e.instead of one at a time?
From helpful advice received in this newsgroup a friend of mine has successfully converted some of his old Works 4 .wps files in Win95 to ..rtf...
Vista General
Rename a batch of file in sequence
Hi all, I tried to rename a batch of file by select all then rename it XXX. After that, all the files renamed as XXX(001), XXX(002) etc.... ...
Vista General
UAC and batch files
I am trying to run a batch file at startup that turns UAC off. It runs fine if UAC is already off but access is denied if it is not already off. ...
Vista General
rename all files from a directory to a list of files ...
hi, what is a script to rename files like track 01a.mp3 track 02a.mp3 track 03a.mp3 track 04a.mp3 ....
PowerShell
rename files (lots of files for newbie)
I have a list of files which has 3 parts name, liked the following: a.system.ini a.appl.ini a.ado.ini b.web.ini c.custom.ini .. .. ..
PowerShell