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

link|improve this question

feedback

9 Answers

up vote 4 down vote accepted

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.

link|improve this answer
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 – Patrick Apr 20 '11 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 '11 at 12:05
feedback

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}
link|improve this answer
feedback

I have 2 solutions:

  1. all files is in the same folder

    • run the following dos command line in the root 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 reclace (in your case, 2)
      • str2put: put a string to be added as a prefix of the new filename (in your case, "._", without "")
    • 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
link|improve this answer
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 '11 at 14:12
voted up because of your incredibly long script to just do a loop and rename sth. :) – wullxz Apr 20 '11 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 '11 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 '11 at 12:56
feedback

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

link|improve this answer
feedback

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.

link|improve this answer
thanks, updated. Re-used code from a similar rename command which required the extension manipulation and didn't notice. – Siim K Apr 20 '11 at 12:05
feedback

Total Commander has a really nice multi-renaming tool.

link|improve this answer
feedback

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.

link|improve this answer
feedback

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.

link|improve this answer
feedback

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

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.