if statement - Setting specific variable (for folder names) in batch script -
i'm busy making batch-script @ workplace automatically syncs 10 different computers single network drive.
the network drive contains study folders , accompanying start menus these studies, syncs each individual computer. example:
study folder = d:\studyfolder1234 start menu = %userprofile%\desktop\startmenu1234
i trying build loop loops through folders on computer, , syncs them accordingly. accounted time needed access network drive adding latency in batch script: 'ping -n 30 -w 1000 127.0.0.1 > nul'.
i want batch script automatically following:
after syncing, whenever there file present on local computer no longer exist on network drive (e.g. studyfolder5241), local 'startmenu5241' automatically moved local 'studyfolder5241' subfolder. after want local 'studyfolder5241' moved local folder (an archive folder).
i'm beginner when comes batch scripting, managed xcopy commands work:
(g:\= network drive) (d:\= local computer)
xcopy /s /d "g:\startmenus\" "%userprofile%\desktop\" xcopy /s /d "g:\study folders\" "d:\"
then looked @ 'for /d', find myself unable compute working variable based off last 4 digits of foldername (in example it's '5241'), believe should easiest way accomplish automated sync (as our studyfolders , start menus end in similar strings of 4 digits). looked 'move'command, comprehensible, can implement after figure out correct conditional statement ('if folder exists locally, not on network drive, then...')
can me problem? if missing something, please point out me , try collaborate on it.
kind regards, jurriaan
edit:
@echo off
setlocal enabledelayedexpansion
for /d %%f in (%userprofile%\desktop*) ( set fold1=%%~nf echo desktop !fold1:~-4!
if not exist "d:\folder1\foldername followed by%fold1%" (
move "%userprofile%\desktop\foldername followed by%fold1%" "d:\foldername followed by%fold1%"
move "d:\foldername followed by%fold1%" "d:\archive\"
) )
setlocal disabledelayedexpansion
cmd /k
so answer how part of folder's name? cannot xcopy can loop. unfortunately due cmd limitations script more complex should be:
@echo off setlocal enabledelayedexpansion /d %%f in (%cd%\*) ( set fold=%%~nf echo !fold:~-4! ) setlocal disabledelayedexpansion the script prints last 4 chars of directories inside current path.
the catch part extraction doesn't work loop variables. cmd needs special option set change variable value inside loop.
Comments
Post a Comment