Solved

dos batch if exists problem

Posted on 2011-09-14
11
355 Views
Last Modified: 2012-05-12
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
0
Comment
Question by:jhacharya
  • 6
  • 5
11 Comments
 
LVL 51

Expert Comment

by:Bill Prew
ID: 36538015
What problem or error message are you having?

~bp
0
 
LVL 51

Accepted Solution

by:
Bill Prew earned 500 total points
ID: 36538050
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
 
LVL 2

Author Comment

by:jhacharya
ID: 36538069
i get "unexpected at this time"

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


0
 
LVL 51

Assisted Solution

by:Bill Prew
Bill Prew earned 500 total points
ID: 36538079
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
 
LVL 51

Assisted Solution

by:Bill Prew
Bill Prew earned 500 total points
ID: 36538094
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
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 2

Author Comment

by:jhacharya
ID: 36538390
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
 
LVL 2

Author Comment

by:jhacharya
ID: 36538414
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
 
LVL 2

Author Comment

by:jhacharya
ID: 36538416
thasnks again you are areally a big help
0
 
LVL 2

Author Comment

by:jhacharya
ID: 36538466
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
 
LVL 2

Author Closing Comment

by:jhacharya
ID: 36538474
brillian easy to understand
0
 
LVL 51

Expert Comment

by:Bill Prew
ID: 36538984
Sorry, was a way, but glad that got you to a point you could work forward from.

~bp
0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

YESTERDAY YESTERDAY.BAT is inspired by a previous article I wrote entitled: TOMORROW.BAT (http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/MS_DOS/A_4196-Advanced-Batch-File-Programming-TOMORROW-BAT.html). The crux of this batch f…
Introduction: Recently, I got a requirement to zip all files individually with batch file script in Windows OS. I don't know much about scripting, but I searched Google and found a lot of examples and websites to complete my task. Finally, I was ab…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now