• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 414
  • Last Modified:

Batch script not function as expected.

Hi;

I have a batch script running on a W2K3 server, (see in code section), this batch file would check if any file exist in K:\PO\archive folder, if it is; it will copy the file to k:\po folder, if not exist, it will display a message.

Howerver; I cannot get "IF NOT EXIST k:\po\archive\*.* GOTO NOFILE" command line working.  It always go to BEGIN section eventhough there is no file in k:\po\archive folder.

Any idea?
@echo off
rem This is a batch program to copy the raw data file from Archive folder back to PO folder
 
:CHK
cls
set folder1=k:\po\archive
set folder2=k:\po
 
IF NOT EXIST k:\po\archive\*.* GOTO NOFILE
 
:BEGIN
dir %folder1%\*.#???????
 
echo.
set /p yn=Confirm to restore this file to K:\PO folder ? y/n 
 
if "%yn%"=="" (echo Not entry) & (GOTO CHK) 
if /I "%yn%"=="n" (GOTO QUIT)
if /I "%yn%"=="y" (GOTO FRESTORE) else (echo Entry not y or n!) & (GOTO CHK)
 
:FRESTORE
ECHO START MOVING...
robocopy %folder1% %folder2% *.*  /mov /maxage:0 /s
 
cls
 
dir k:\po\*.#???????
echo.
echo ************************************************************************
echo ** If you can see the file listed now, your file restore is complete. **
echo ** Run AGAIN.                                          **
echo ************************************************************************
echo.
echo ___________________________________________________________
echo If you do not see the file restored, please try again or 
echo.
echo contact I.T. Dept by e-mail or phone.                    
echo ___________________________________________________________
 
:END
 
echo.
set yn=
set /p yn=Do this again [y/n]?
if "%yn%"=="" (echo Not entry) & (GOTO END) 
if /I "%yn%"=="n" (GOTO QUIT)
if /I "%yn%"=="y" (GOTO CHK) else (echo Entry not y or n!) & (GOTO END)
 
:NOFILE
echo.
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo x No file found in k:\po\archive folder,    x
echo x it could be done already.                 x
echo x No file restore can be done at this time. x 
echo x Asking I.T. Dept for further assistance.  x
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
pause
:QUIT
EXIT

Open in new window

0
KANEWONG
Asked:
KANEWONG
2 Solutions
 
Francois_ITCommented:
replace
 IF NOT EXIST k:\po\archive\*.* GOTO NOFILE

With
dir /b /a k:\po\archive\|findstr .>nul:&&(goto :BEGIN)||(goto :NOFILE)
0
 
lppperesCommented:
Hi Kanewong.

Try using these lines:
set file_exist = False
dir %folder1% /b | find /v "Some random string" >nul && (set file_exist=True) || (set file_exist=False)
IF %file_exist% == False GOTO NOFILE

Instead of:
IF NOT EXIST k:\po\archive\*.* GOTO NOFILE
0
 
KANEWONGAuthor Commented:
Both solutions work but Francois is simple and what I need.
0

Featured Post

Take Control of Web Hosting For Your Clients

As a web developer or IT admin, successfully managing multiple client accounts can be challenging. In this webinar we will look at the tools provided by Media Temple and Plesk to make managing your clients’ hosting easier.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now