windows - Renaming Folder Structure in Batch -


)

in order make company (where i'm working) operate more organized , efficiently we've created approved folder structure new projects.

new projects , live projects reside on file server , @ same level each other. (live projects have made through planning, new projects go far planning)

the project folder structure can meticulous create each time start new project, therefore made windows batch file create it. can find here: http://pastebin.com/mnsu5vnk part works well!

the folder structure is:

f:\new job\project name\project correspondence  f:\new job\project name\project directory  f:\new job\project name\project drawings  f:\new job\project name\project images  f:\new job\project name\project correspondence\arboriculturalist  f:\new job\project name\project correspondence\cgi  f:\new job\project name\project correspondence\client  f:\new job\project name\project correspondence\measured survey  f:\new job\project name\project correspondence\planning  f:\new job\project name\project correspondence\post planning folders (drop in , when)  f:\new job\project name\project correspondence\client\appointments  f:\new job\project name\project correspondence\client\fees  f:\new job\project name\project correspondence\planning\la planning  f:\new job\project name\project correspondence\planning\planning consultants  f:\new job\project name\project correspondence\planning\la planning\planning application  f:\new job\project name\project correspondence\planning\la planning\pre application  f:\new job\project name\project correspondence\post planning folders (drop in , when)\arboriculturalist  f:\new job\project name\project correspondence\post planning folders (drop in , when)\contract administrator  f:\new job\project name\project correspondence\post planning folders (drop in , when)\contractor  f:\new job\project name\project correspondence\post planning folders (drop in , when)\la building control  f:\new job\project name\project correspondence\post planning folders (drop in , when)\m&e consultants  f:\new job\project name\project correspondence\post planning folders (drop in , when)\structural engineer  f:\new job\project name\project correspondence\post planning folders (drop in , when)\tender, specification  f:\new job\project name\project drawings\cd series (construction details)  f:\new job\project name\project drawings\drawing register  f:\new job\project name\project drawings\ew series (external works)  f:\new job\project name\project drawings\outgoing drawings  f:\new job\project name\project drawings\p series (planning)  f:\new job\project name\project drawings\rl drawings (room layouts)  f:\new job\project name\project drawings\sk series (sketch design)  f:\new job\project name\project drawings\x series (existing)  f:\new job\project name\project drawings\outgoing drawings\dwg files  f:\new job\project name\project drawings\outgoing drawings\pdf files 

the problem new projects never make "live" status; however, allocated project number , consequently need prefixing each sub-folder project number. reason prefixing each sub-folder project number owing "people" accidentally dragging/copying/moving them off project can make things confusing!

an additional problem of "new projects" have been sitting there while (1 year+) , have no folder structure them, therefore need make batch file detects if "new project" has approved folder structure or not, , rename appropriate.

this have believe methodology wrong.

@echo off :start set /p projno=project number: set /p projad=project address: cls  echo new project name? echo project number=%projno% echo project address= %projad%  set /p proceed=is correct? [y/n] if /i {%proceed%}=={y} (goto :yes) if /i {%proceed%}=={yes} (goto :yes) if /i {%proceed%}=={n} (goto :no) if /i {%proceed%}=={no} (goto :no)  :no cls goto :start  :yes set "currentpath=%cd%" set "projfolder=%projno%-%projad%"  :: check if 000-project address doesn't exists echo project folder exist %currentpath%\%projno%-%projad%? if not exist "%currentpath%\%projno%-%projad%\"      (     echo folder not exist         ::check if project folder name doesn't existing         if not exist "%currentpath%\%projad%\"          (             :: rename folder 000-project address             echo renaming project folder             ren "%projad%" "%projno%-%projad%"              call:toplevel         )         ::if project address name exist         else          (                    ::enter folder , check structure.             echo project folder doesn't need renaming             call:toplevel         )     ) ::----------------------------------------------------- ::      if "000-project address" exist ::-----------------------------------------------------      else      (         echo there no need run script!         goto:eof     )   )   ::-----------------------------------------------------   ::    recurse top level   ::   ::   if "recommended" directory names exist    ::   rename sub-directories too!   ::   else create them all!   ::-----------------------------------------------------     :toplevel       cd projfolder         ::check if there's project correspondence          if exist "project correspondence"          (                ren "project correspondence" "%projno%-project correspondence"             ::rename child folders             cd "%projno%-project correspondence"             /f "tokens=*" %g in ('dir /b /a:d "*"') ren "%g" "%projno%-%g"             cd "%projno%-client"             /f "tokens=*" %g in ('dir /b /a:d "*"') ren "%g" "%projno%-%g"             cd ..\planning\           )         else          (             mkdir "%projno%-project correspondence"             callto:              ::function makeprojcorrespondence             call:makeprojcorrespondence %projno%          )         :: check if there's project directory         if exist "project directory"          (             ren "project directory" "%projno%-project directory"         )         else          (             mkdir "%projno%-project directory"         )         if exist "project drawings"          (             ren "project drawings" "%projno%-project drawings"             ::go project drawings function         )         goto:eof    :makeprojcorrespondence   cd "%projno%-project correspondence"     mkdir "%projno%-planning"     mkdir "%projno%-arboriculturalist"     mkdir "%projno%-cgi"     mkdir "%projno%-client"     mkdir "%projno%-measured survey"     mkdir "%projno%-post planning folders (drop in , when)"      ::make folders under planning     cd "%projno%-planning"         mkdir "%projno%-la planning"         mkdir "%projno%-planning consultants"     cd "..\"      ::make folders in client     cd "%projno%-client"         mkdir "%projno%-appointments"         mkdir "%projno%-fees"     cd "..\"      ::make post planning folders     cd "%projno%-post planning folders (drop in , when)"         mkdir "%projno%-arboriculturalist"         mkdir "%projno%-contract administrator"         mkdir "%projno%-contractor"         mkdir "%projno%-la building control"         mkdir "%projno%-m&e consultants"         mkdir "%projno%-structural engineer"         mkdir "%projno%-tender, specification"     cd "..\..\"     goto:toplevel 

tips , advice appreciated!

many thanks

this designed recurse through folder tree called c:\database\project daredevil , add 001- front of each folder name in tree.

@echo off set "num=001-" /d /r "c:\database\project daredevil" %%a in (*) ren "%%a" "%num%%%~nxa" 

this code report folders missing, , create missing folders.
can make num equal nothing create fresh set of folders.

edit2:

@echo off set "num=001-" set "project=c:\database\project daredevil"  %%a in ( "project correspondence" "project directory" "project drawings" "project images" "project correspondence\%num%arboriculturalist" "project correspondence\%num%cgi" "project correspondence\%num%client" "project correspondence\%num%measured survey" "project correspondence\%num%planning" "project correspondence\%num%post planning folders (drop in , when)" "project correspondence\%num%client\%num%appointments" "project correspondence\%num%client\%num%fees" "project correspondence\%num%planning\%num%la planning" "project correspondence\%num%planning\%num%planning consultants" "project correspondence\%num%planning\%num%la planning\%num%planning application" "project correspondence\%num%planning\%num%la planning\%num%pre application" "project correspondence\%num%post planning folders (drop in , when)\%num%arboriculturalist" "project correspondence\%num%post planning folders (drop in , when)\%num%contract administrator" "project correspondence\%num%post planning folders (drop in , when)\%num%contractor" "project correspondence\%num%post planning folders (drop in , when)\%num%la building control" "project correspondence\%num%post planning folders (drop in , when)\%num%m&e consultants" "project correspondence\%num%post planning folders (drop in , when)\%num%structural engineer" "project correspondence\%num%post planning folders (drop in , when)\%num%tender, specification" "project drawings\%num%cd series (construction details)" "project drawings\%num%drawing register" "project drawings\%num%ew series (external works)" "project drawings\%num%outgoing drawings" "project drawings\%num%p series (planning)" "project drawings\%num%rl drawings (room layouts)" "project drawings\%num%sk series (sketch design)" "project drawings\%num%x series (existing)" "project drawings\%num%outgoing drawings\%num%dwg files" "project drawings\%num%outgoing drawings\%num%pdf files" ) (    if not exist "%project%\%num%%%~a\" (       echo "%project%\%num%%%~a\" missing       md "%project%\%num%%%~a\"     ) ) pause 

Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -