Link to home
Start Free TrialLog in
Avatar of Lau888
Lau888

asked on

Creating folders and sub folder in a batch file

Hi,

Is there a way of creating a range of folders and within the range of folders are 3 sub-folders in a batch file?
For instance i want to create a set of folders from 100 to 150 and within each of these folders are the exact same sub-folders called Reports, Misc and Spreadsheets.

I kind of figured out how to create a single folder and with the 3 sub folder but not too create a whole range without having to input the number manually.
So so far i have a createfol.bat file with the follwoing commands:
mkdir %1\reports
mkdir %1\spreadsheets
mkdir %1\misc

I can run this .bat in the cmd by typing
createfol.bat 100
Now this creates the folder 100 with the subfolders i want but i dont want to have to do this another 200-300 times to create the others.

Is there an easier way? any help really appreciated

Thanks for you help in advance
Avatar of jonathonberg
jonathonberg

Create another batch file using creatfol.bat 100, use excel to create the command for each folder (100-159) and paste the commands into the new batch file and run.
Avatar of Lau888

ASKER

Hi,
Thanks for the quick reply.

Apologies if i am being stupid, but i am not quite sure what it is you mean? The createfol.bat i have includes the commands to create the sub-folders only. So in order for me to create the root folder i.e 100 i have to go into command prompt and type in "createfol.bat 100" so now if i wish to create a folder called 101 with the same sub-folders i have to type teh following in comman prompt again "createfol.bat 101"

So what would i need put into excel in order to create the new batch file? Sorry about this bit of a begineer when it comes to scripting.

Thanks
Avatar of oBdA
Try the script below. It uses a loop ("for /L"), and the script now requires two command line arguments: the first folder number to be created and the last one.
createfol 100 150
It's currently in test mode, so that you can try it; it will only display the "md" commands it would otherwise run.
Remove the capitalized ECHOs in front of the md commands to run it for real.
@echo off
setlocal
if "%~2"=="" (
  echo Syntax: %~nx0 ^<starting number^> ^<end number^>
  goto :eof
)
set RangeStart=%~1
set RangeEnd=%~2
for /l %%i in (%RangeStart%, 1, %RangeEnd%) do (
  echo Processing folder %%i ...
  ECHO md "%%i\reports"
  ECHO md "%%i\spreadsheets"
  ECHO md "%%i\misc"
)

Open in new window

Avatar of Lau888

ASKER

Sorry odba, you will have to excuse my poor knowledge of all this. I have tried to use your script and removed ECHO but it doesnt seem to work. Also changed the where it says "RangeStart" and " RangeEnd" to the number i require and it still doesnt work. Am i doing something incorrect???

Apologies again if it is a simple mistake.

Thanks
ASKER CERTIFIED SOLUTION
Avatar of oBdA
oBdA

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Lau888

ASKER

That worked!!

Many thanks obda, you are a life saver!!!