Jump to content
x_soldier

Batch - IF EXIST

Recommended Posts

x_soldier

Boas pessoal!

Tenho um batch que basicamente o que faz é ir a um FTP e copiar uns ficheiro e colar numa pasta que ele cria com a data do dia anterior. Queria correr o ficheiro 2 ou 3 vezes á noite, gostava de implementar um "IF Exist" para no caso do ficheiro já ter sido copiado ele ignorar.

Alguém me pode ajudar?

TITLE Copia Ficheiros do FTP

@echo off

for /f "tokens=1" %%i in ('date /t') do set thedate=%%i

set mm=%thedate:~3,2%
set dd=%thedate:~0,2%
set yyyy=%thedate:~6,4%


REM echo Today : %dd%.%mm%.%yyyy%


if %dd%==08 (
set dd=8 ) else (
if %dd%==09 (
set dd=9 ) )

if %mm%==08 (
set mm=8 ) else (
if %mm%==09 (
set mm=9 ) )

set /A dd=%dd% - 1
set /A mm=%mm% + 0

if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1

:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
if %mm%==12 goto SET31

goto ERROR

:SET31
set /A dd=31 + %dd%
goto DONE

:SET30
set /A dd=30 + %dd%
goto DONE

:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29

:SET28
set /A dd=28 + %dd%
goto DONE

:SET29
set /A dd=29 + %dd%

:DONE
if /i %dd% LSS 10 set dd=0%dd%
if /I %mm% LSS 10 set mm=0%mm%
set ONTEM=%dd%-%mm%-%yyyy%

cd\teste
set NomePasta=%ONTEM%
md %ONTEM%



REM Criar Ficheiro de ligação FTP
echo Open 193.999.999.99> FTP.txt
ECHO anonymous>> FTP.txt
echo 129996>> FTP.txt
echo cd Orey>> FTP.txt
echo lcd c:\Teste\%ONTEM%>> FTP.txt
echo mget *%ONTEM%.txt>> FTP.txt
echo quit>> FTP.txt

ftp -i -s:FTP.txt
pause

Obrigado

Share this post


Link to post
Share on other sites
jpaulino

Podes fazer algo como isto:

if exist "c:\ficheiro.txt" 
(
     echo OK
)
else 
(
     echo Oppss!
)

Share this post


Link to post
Share on other sites
x_soldier

Podes fazer algo como isto:

if exist "c:\ficheiro.txt" 
(
     echo OK
)
else 
(
     echo Oppss!
)

Obrigado pela resposta Jorge...

Já tinha tentado um "If", ai como é que eu consigo colocar pra se existir ele ignorar? E pesquisar apenas uma parte do nome do ficheiro?

Os ficheiros são isto por exemplo: OpenPositionsManagedFund_28-06-2011.txt, eu queria pesquisar sem colocar a data porque todos os dias será uma data diferente!

Abraço,

Share this post


Link to post
Share on other sites
jpaulino

É só substituir o que queres por um asterisco (*)

Exemplo:

if exist "c:\fichei*.txt"

...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.