8

I've 80.000 files in a folder and I need to rename all them from

filename.jpg

to

._filename.jpg

in Windows environment, I guess from dos. The reason is that I've compressed these files into a tar.gz from unix and copied into windows and for some reason the filenames have changed.

Could you tell me what's the command to do it ? thanks

9 Answers 9

3

You can use the built in rename or ren command:

ren *.jpg ._*.jpg

Though, as with all these things, try it on a directory containing just a few files first.

3
  • 1
    I like your approach, but i have 2 issues: (1) the first letters of the filenames are replaced. In other terms, the "._" is not added at the beginning but it replaces the first 2 letters. (2) "._" actually doesn't work. If I use, for instance "__" then it works. I think the dot, "." gives some issues
    – aneuryzm
    Apr 20, 2011 at 12:02
  • @Patrick - I must admit I didn't have chance to fully test this this, and yes I think you're right about the dot causing problems.
    – ChrisF
    Apr 20, 2011 at 12:05
  • This is incorrect and it's not because of the dots. ren can only replace text with text of the same length. For example, if you have files file1.txt and file2.txt, ren file*.txt blah*.txt does what you expect (you now have files blah1.txt and blah2.txt). However, if you then type ren blah*.txt myfile*.txt the command bombs out because it renames blah1.txt to myfile.txt (not myfile1.txt) and then cannot rename blah2.txt to myfile.txt because that file already exists. Sep 14, 2014 at 11:51
15

Here's a way using PowerShell:

Navigate to your folder and run this command

Get-ChildItem *.jpg | Rename-Item -newname {"._" + $_.Name}

Extra bonus short version:

gci *.jpg | ren -newname {"._" + $_.Name}
6

I have 2 solutions:

  1. All files are in the same folder

    • run the following from command prompt on that folder:

      for /f "delims=¯" %i in ('dir /b /on') do ren "%i" "._%i"
      
  2. complete solution when there are files in subfolders AND when you wanna to replace the "n" first characters with a string you want :D

    • create a batch file with the following command
    • change variable parameters to what you want
      • path: put inside "" the root path of your files (e.g. "C:\documents and settings\user\desktop\new folder"
      • numfirstchars2replace: put a number with the first characters to replace (in your case, 2)
      • str2put: put a string to be added as a prefix of the new filename (in your case, ._)
    • run it in a folder different from where the files are


@echo off

::only to tell user what this bat are doing
echo.1.initializing...

::enable that thing to allow, for example, incremental counter in a for loop :)
echo.- EnableDelayedExpansion
SETLOCAL EnableDelayedExpansion

::variables
echo.- variables
:: - place here the absolute root path of your files
set path="put here where are the root folder of your files"
set pathbak=%cd%
set numfirstchars2replace=2
set str2put=._

::go to %path% and its driveletter
echo.- entering the path you want
for /f "delims=¯" %%i in ('echo.%path%') do %%~di
cd %path%

::search all subfolders and save them to a temp file
echo.- searching for subfolders
echo.%path%>%temp%\tmpvar.txt
for /f "delims=¯" %%i in ('dir /s /b /on /ad') do echo."%%i">>%temp%\tmpvar.txt

::execute command for root folder and all found subfolders
echo.
echo.2.executing...
for /f "delims=¯" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=¯" %%j in ('dir /b /on /a-d') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace%,1000!
    echo.- renaming from "%%j" to "%str2put%!newname!"...
    ren "%%j" "%str2put%!newname!"
  )
)

echo.
echo.3.exiting...
::return to %pathbak% and its driveletter
for /f "delims=¯" %%i in ('echo.%pathbak%') do %%~di
cd %pathbak%

@echo on
4
  • fully tested :) it solves your problem, including with some specs you give in @ChrisF comment. note: in "delims=¯", if "¯" is used in a filename, change "¯" with another character you know that is not used in the filenames
    – kokbira
    Apr 20, 2011 at 14:12
  • voted up because of your incredibly long script to just do a loop and rename sth. :)
    – wullxz
    Apr 20, 2011 at 22:27
  • well, justly, I could make a "for /f" loop with all files sorted by name and then renaming them to "._lenameX.jpg" with X as the order number, but I thought in a way to do it for other cases - if in future a similar problem appears, someone can modify some commands...
    – kokbira
    Apr 22, 2011 at 7:38
  • you can use "delims=" instead of "delims=¯" (I forgot that :D). also you can use for /f intead of for /f "delims=" because it does what I want in that case...
    – kokbira
    Apr 25, 2011 at 12:56
3

If they are all in the same folder, you could select them all with Control + A and then hit F2 to rename one of them. All subsequent files will be named file(2), file(3), etc

3

Try Powershell (preinstalled in Windows 7):

Get-Childitem /path/to/your/files | foreach-object { move-item $_ $("._" + $_.name) }

(tested it in my download-dir.)

Edit: Siim K's code will append an additional ".jpg" to every "._filename.jpg". Remove that last ".jpg" in Siim K's code and you have a short, elegant code to rename your files.

1
  • thanks, updated. Re-used code from a similar rename command which required the extension manipulation and didn't notice.
    – Siim K
    Apr 20, 2011 at 12:05
3

Total Commander has a really nice multi-renaming tool.

0

I've always found Flash Renamer to be a good tool for renaming files in batches.

It has trial and full versions ($20) and can rename files based on meta data - very useful for renaming MP3 files which I what I use it for mostly.

0

If your looking for a user friendly way of renaming in bulk you could try the free tool Ant Renamer, there's a huge list of actions you can take and it also gives a handy preview before you do any renaming. I use it a lot when messing with my music, photo or video librarys.

0

I have used this freeware File Renamer program with great results. Many different filters and options, plus it gives you the ability to test results. A little outdated UI perhaps but works like a champ.

http://www.webxpace.com/software/freeware.shtml#FileRenamer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .