• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 71
  • Last Modified:

Rename Script - File in folder gets same name as folder

Hi,

I need a script or a handy application that can help me with this.


I have 400 folders - all folders has the correct name - In every folder i got 1 file.

I want this file to get the same name as the folder its placed in.


Exampel

Foldername ;

"Stew - High"

The file inside should then be ;

"Stew - High" + extension.


Thank you in advice
0
HITC
Asked:
HITC
  • 5
  • 4
  • 4
2 Solutions
 
McKnifeCommented:
Take his oneliner:
for /f %a in ('dir /b c:\test') do ren c:\test\%a\*.* %a.*

Open in new window

This assumes the 400 folders are below c:\test.
0
 
HITCITAuthor Commented:
Hmm.

Dosent work.

I get en error ;

"do was unexpected at this time."

Have created it like a CMD file.
0
 
McKnifeCommented:
open cmd.exe, and launch that code line.
0
A Cyber Security RX to Protect Your Organization

Join us on December 13th for a webinar to learn how medical providers can defend against malware with a cyber security "Rx" that supports a healthy technology adoption plan for every healthcare organization.

 
HITCITAuthor Commented:
Well somthing is wrong :) - Sorry

Can you figure it out ?

Thank you
0
 
HITCITAuthor Commented:
Attached file
CMD.png
0
 
McKnifeCommented:
Your screenshot shows you did not paste the line only, but you added more to it.
I looked at the folders, and of course blanks in folder names need to be taken care of, so open cmd and launch
for /f "delims=" %a in ('dir /b c:\users\jje\desktop\test') do ren c:\users\jje\desktop\test\"%a"\*.* "%a".*

Open in new window

0
 
QlemoC++ DeveloperCommented:
Though that works, it is bad style (because it uses a bug's side effect). The double quotes should always enclose the whole path. It is always a good idea to make sure the FOR variable does not already contain the enclosing double quotes, too.
I would also make sure only folders are retrieved by the DIR.
for /f "delims=" %a in ('dir /b /a:d c:\users\jje\desktop\test') do ren "c:\users\jje\desktop\test\%~a\*.*" "%~a.*"

Open in new window

0
 
QlemoC++ DeveloperCommented:
Just to compare, here the PowerShell (3+) line (doesn't matter if contained in a script or used at the prompt):
get-childitem 'c:\users\jje\desktop\test' -Directory | get-childitem -File | rename-item -NewName {$_.Directory.BaseName+$_.Extension}

Open in new window

Not really a difference.
1
 
HITCITAuthor Commented:
Thank you! It works.

I used Qlemo's powershell script!

I am a bit unsure who to give the point. McKnife gave the correct answer i think.
0
 
QlemoC++ DeveloperCommented:
Usually you accept the answer you used and/or are certain it works. However, you might accept both solutions and split the points, equally or not. Both solutions are worth the same IMHO.
0
 
McKnifeCommented:
Qlemo, I don't mind if you call it bad style. If there would be cases where it would lead to unwanted results, I would like to see those so I could learn from it. If there were files at the same level as the folders, it would not lead to unwanted results, nor would the variable already contain enclosing double quotes - if I don't see it, please help me with an example.

The points don't matter to me.
0
 
QlemoC++ DeveloperCommented:
Files in the root folder lead to an error message, if I'm correct (didn't test yet).

One reason for not to enclose parts of the path only in double quotes is that you then need to enclose each part individually...
0
 
HITCITAuthor Commented:
Thank you!

Points are splitted
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 5
  • 4
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now