dos batch if exists problem

I am created a ms dos batch file that will check if a file exists in a drectory, but I keep on getting the unexpted at this time problem ...


here is what I am doing

set SrcFileDir=C:\SRC\
set SrcFile=TEST.TXT
set DestinationFileDir=c:\DEST\
set CASENumberForPromotion=123
set PromotionDate=20110101
set dosDumpFileName=sample.log
set DirCopyOldFilesDIR=%DestinationFileDir%%PromotionDate%\%CASENumberForPromotion%\
set OldFileExtenxtion=.%CurrentDateTime%

::------------------------------------------------------------
:: Define how to copy the files
::------------------------------------------------------------
:CopyFiles
set CopySource=%SrcFileDir%%SrcFile%
set DirCopyOldFilesDIR=%DestinationFileDir%%PromotionDate%\%CASENumberForPromotion%\
set OldFileExtenxtion=.%CurrentDateTime%
echo. CopySource=%SrcFileDir%%FILENAME% >> %dosDumpFileName%
For /F "tokens=*" %%n in ('dir %CopySource% /b') Do (
set TCopyFile=%%n
If Not Exist %DestinationFileDir%%TCopyFile% (Goto:CopyFile) Else (Goto:RenameCopyFile))
GOTO:EOF    

:CopyFile
echo. copy %SrcFileDir%%TCopyFile% %DestinationFileDir%
GOTO:EOF

:RenameCopyFile
echo. rename %SrcFileDir%%TCopyFile% %SrcFileDir%OLD_%TCopyFile%%OldFileExtenxtion%
echo. copy %SrcFileDir%%TCopyFile% %DestinationFileDir%
GOTO:EOF
LVL 2
Jayesh AcharyaTechnichal ConsultantAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Bill PrewCommented:
What problem or error message are you having?

~bp
0
Bill PrewCommented:
I see a few potential problems, take a look at this.  You need EnableDelayedExpansion to be able to reference a variable that you set insode the FOR loop, as in TCopyFile. Also, I don't see the CurrentDaeTime variable set. In addition I think your logic in the FOR loop was jumping out of the FOR loop after one file, not sure you wanted that.

setlocal EnableDelayedExpansion

REM NEED TO SET CurrentDateTime

set SrcFileDir=C:\SRC\
set SrcFile=TEST.TXT
set DestinationFileDir=c:\DEST\
set CASENumberForPromotion=123
set PromotionDate=20110101
set dosDumpFileName=sample.log
set DirCopyOldFilesDIR=%DestinationFileDir%%PromotionDate%\%CASENumberForPromotion%\
set OldFileExtenxtion=.%CurrentDateTime%

::------------------------------------------------------------
:: Define how to copy the files
::------------------------------------------------------------
:CopyFiles
set CopySource=%SrcFileDir%%SrcFile%
set DirCopyOldFilesDIR=%DestinationFileDir%%PromotionDate%\%CASENumberForPromotion%\
set OldFileExtenxtion=.%CurrentDateTime%
echo. CopySource=%SrcFileDir%%FILENAME% >> %dosDumpFileName%
For /F "tokens=*" %%n in ('dir %CopySource% /b') Do (
  set TCopyFile=%%n
  If Not Exist %DestinationFileDir%!TCopyFile! (
    echo. copy %SrcFileDir%!TCopyFile! %DestinationFileDir%
  ) Else (
    echo. rename %SrcFileDir%!TCopyFile! %SrcFileDir%OLD_!TCopyFile!%OldFileExtenxtion%
    echo. copy %SrcFileDir%!TCopyFile! %DestinationFileDir%
  )
)

Open in new window

~bp
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Jayesh AcharyaTechnichal ConsultantAuthor Commented:
i get "unexpected at this time"

the error seems to be when it tried to check for the the file existance


0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Bill PrewCommented:
One other thing I notice:

    echo. rename %SrcFileDir%!TCopyFile! %SrcFileDir%OLD_!TCopyFile!%OldFileExtenxtion%
    echo. copy %SrcFileDir%!TCopyFile! %DestinationFileDir%

Open in new window

this seems like you will rename whatever file is represented by "%SrcFileDir%!TCopyFile!", and then after renaming it try to copy the old file name.  That won't exist at that point.  I suspect you might want:

    echo. rename %SrcFileDir%!TCopyFile! %SrcFileDir%OLD_!TCopyFile!%OldFileExtenxtion%
    echo. copy %SrcFileDir%OLD_!TCopyFile!%OldFileExtenxtion% %DestinationFileDir%

Open in new window

~bp
0
Bill PrewCommented:
Also, I think the FOR loop may be wrong.  I think you are trying to read the contents of the TEST.TXT file, line by line, right?  If so, then this:

For /F "tokens=*" %%n in ('dir %CopySource% /b') Do (

Open in new window

should be:

For /F "tokens=*" %%n in (%CopySource%) Do (

Open in new window

~bp
0
Jayesh AcharyaTechnichal ConsultantAuthor Commented:
ok this has got past the error, but for some reason the check
If Not Exist %DestinationFileDir%!TCopyFile!

is not logically working

unless I am reading it wrong.

I read this if as :

If the file c:\DEST\TEST.TXT does not exist  then the if is TRUE

But when running it it comes out false.
 any help??
0
Jayesh AcharyaTechnichal ConsultantAuthor Commented:
no i am just trying to loop through all the files that are in the directory, If I dont give a srouce file name
then I wanted to program to loop through every file in the srouce directory

So I am trying to make this work with just one file

You are right about the copy / reanme but at this point I wanted to fisrt make sure the logic is right
0
Jayesh AcharyaTechnichal ConsultantAuthor Commented:
thasnks again you are areally a big help
0
Jayesh AcharyaTechnichal ConsultantAuthor Commented:
nope im wrong i didnt save the changes before i re ran my script duh !!!
sorry
thanks again ...

this is what I am using
::------------------------------------------------------------
:: Define how to copy the files
::------------------------------------------------------------
:CopyFiles
set CopySource=%SrcFileDir%%SrcFile%
set DirCopyOldFilesDIR=%DestinationFileDir%%PromotionDate%\%CASENumberForPromotion%\
set OldFileExtenxtion=.%CurrentDateTime%
echo. CopySource=%SrcFileDir%%SrcFile% >> %dosDumpFileName%
For /F "tokens=*" %%n in ('dir %CopySource% /b') Do (
  set TCopyFile=%%n
  If Not Exist %DestinationFileDir%!TCopyFile! (
    echo. the file !TCopyFile! does not exists in %DestinationFileDir%
    echo. copy %SrcFileDir%!TCopyFile! %DestinationFileDir%
  ) Else (
    echo. the file !TCopyFile! exists in %DestinationFileDir% , destination file copying file to DirCopyOldFilesDIR% first
    echo. copy %DestinationFileDir%!TCopyFile! to %DirCopyOldFilesDIR%OLD_!TCopyFile!%OldFileExtenxtion%
    echo. copy %SrcFileDir%!TCopyFile! %DestinationFileDir%
  )
)
GOTO:EOF  

the other varaibles are set before in other parts of the script
0
Jayesh AcharyaTechnichal ConsultantAuthor Commented:
brillian easy to understand
0
Bill PrewCommented:
Sorry, was a way, but glad that got you to a point you could work forward from.

~bp
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft DOS

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.