/ Forside/ Teknologi / Udvikling / Andet udvikling / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Andet udvikling
#NavnPoint
BertelBra.. 1370
natmaden 870
srhansen 670
_michael_ 510
katekismus 500
MatrixRev.. 500
molokyle 462
refi 370
Teil 328
10  EXTERMINA.. 320
Bat IF EXIST - virker ikke
Fra : emhauge
Vist : 1057 gange
100 point
Dato : 27-08-09 11:35

Hej Derude

Jeg er ved at lave et ftp script der tjekker om en bestemt fil er tilgængelig på en ftp.
Det virker bare slet ikke, jeg håber der er en der kan gennemskue min fejl i nedenstående kode:

/////////////////////////////////////////////////
@echo off
echo brugernavn > ftp.txt
echo adgangskode >> ftp.txt
echo binary >> ftp.txt
echo prompt >> ftp.txt

:start
SET /P navn=INDTAST NAVN:
cls
SET navn=%navn%

echo Du har indtastet navn: %navn%
echo Er det korrekt?
echo Tryk J for Ja, N for Nej
choice /C JN
if ERRORLEVEL ==2 goto start
if ERRORLEVEL ==1 goto menu

:menu
echo cd %navn% >> ftp.txt
echo IF EXIST start.asp ERRORLEVEL ==1 goto ok >> ftp.txt

PAUSE

echo IF NOT EXIST start.asp ERRORLEVEL ==2 goto mangler >> ftp.txt

PAUSE

:ok
echo OK >> ftp.txt
PAUSE
goto end


:mangler
echo Er ikke oprettet >> ftp.txt
PAUSE
goto end

:end
echo afslut >> ftp.txt
PAUSE
echo bye >> ftp.txt

ftp -s:ftp.txt [ftp site]

del ftp.txt

exit

///////////////////////////////////////////////

Jeg skal indtaste navn og svare Ja
herefter skal jeg trykke en tast for at gå videre nogle gang, hvorefter den lukker og slukker....
Jeg vil gerne vide om mappen [%navn] og filen er oprettet - mest vigtigt er det dog om mappen er oprettet, kan man det?


emhauge


 
 
Kommentar
Fra : molokyle


Dato : 27-08-09 12:47

Lidt ud over mine færdigheder i batch programmering
, men prøv at se om du kan nå :

http://www.kandu.dk/userprofile.aspx?uid=252858

Evt. ved at skrive en privat besked.

</MOLOKYLE>

Kommentar
Fra : BertelBrander


Dato : 27-08-09 19:43

Jeg tvivler stærkt på at "if exist" virker inde fra ftp.exe.

Og jeg tror ikke at dette er en legal syntax for "if ...":
IF NOT EXIST start.asp ERRORLEVEL ==2 goto mangler

Du bliver nok nødt til at checke for filen på en anden måde. Du kan f.eks. prøve at downloade (/uploade) den, og så checke om den er der, når du har afsluttet ftp.exe

Accepteret svar
Fra : dos-man

Modtaget 100 point
Dato : 27-08-09 22:14

hej jeg fik lige et skype opkald at jeg lige skulle kigge på dette spg.
hmmmmm
joh lad os nu lige se ....


her er lidt du kan lege lidt med ( den er bare lige hurtigt lavet så den skal nok lige finpudses )
men for at tjekke mapper så brug evt dir
------------------------------------------------------------------------------------

@echo off
:start
SET SERVER=XXX.XXX.XXX.XXX
SET /P USERNAME=logon navn:
cls
echo %username%
echo.
echo 1. dette logon navn er korrekt
echo 2. logon navnet er forkert Afslut
echo.
set /p choice=nummer:
if '%choice%'=='1' goto gaa
if '%choice%'=='2' goto end
if not '%choice%'=='' goto end
:gaa
cls
SET /P PASSWORD=INDTAST password:
cls
echo %PASSWORD%
echo.
echo 1. dette PASSWORD er korrekt
echo 2. PASSWORD er forkert Afslut
echo.
set /p choice=nummer:
if '%choice%'=='1' goto gaa1
if '%choice%'=='2' goto end
if not '%choice%'=='' goto end
:gaa1
cls
SET /P mappe= indtast mappe der skal tjekkes:
cls
echo %mappe%
echo.
echo 1. korrekt indtastet
echo 2. forkert Afslut
echo.
set /p choice=nummer:
if '%choice%'=='1' goto gaa2
if '%choice%'=='2' goto end
if not '%choice%'=='' goto end
:gaa2
SET LOCALFILE=C:\down
SET REMOTEPATH=%mappe%
SET LOGFILE=ftplog.txt
SET TEMPFILE=$temp.txt

cd %LOCALFILE%

echo open %SERVER% >%TEMPFILE%
echo %USERNAME%>>%TEMPFILE%
echo %PASSWORD%>>%TEMPFILE%
echo bin >>%TEMPFILE%
echo cd %REMOTEPATH% >>%TEMPFILE%
echo quit >>%TEMPFILE%

echo. >>%LOGFILE%
echo. >>%LOGFILE%

REM KØR FTP script
REM ------------------

ftp -s:%TEMPFILE% >>%LOGFILE%

REM Clean up
REM --------
del %TEMPFILE%
type %LOGFILE%
pause
DEL %LOGFILE%







Kommentar
Fra : emhauge


Dato : 27-08-09 22:35

WoW Dos-man

hvis det er hurtig lavet, ville jeg gerne se når du er omhyggelig

jeg vil se på sagerne, når jeg er lidt mere frisk i morgen, men det ser sgu ikke dumt ud


emhauge

Kommentar
Fra : dos-man


Dato : 28-08-09 08:57

hej igen
prøv lige at bytte denne linje
echo cd %REMOTEPATH% >>%TEMPFILE%

ud med denne
echo ls %REMOTEPATH% >>%TEMPFILE%


det virker således at der bliver lavet en dir af den mappe du vil tjekke

Kommentar
Fra : molokyle


Dato : 28-08-09 15:29

Ja... vi er her jo for, at hjælpe hinanden/hverandre ...så langt evnerne rækker

Sitter me' på en lytter ..hér på sidelinjen

</MOLOKYLE>

Kommentar
Fra : dos-man


Dato : 28-08-09 16:51

jep molokyle det var lige de ord som jeg plejer at bruge

nogen er god til dit og nogen til dat og nogen lære det aldrig men de får så andre til at lave det for sig , mod en lille belønning

emhauge >> nu kan kan du prøve at lege lidt med denne bat fil og du kan jo fortsætte med at lave feks. en call til en anden bat fil som du så har lavet en svar fil i om det var oprettet en den ønskede mappe hvis ikke " vil du så oprette mappen j/n -1/2 "
osv..... kun din fantasi sætter grænsen
men jeg håber du kunne bruge dette til lidt inspiration og sætte gang i tankerne ,
men hvorfor vil du lige lave det i batch ?
men lige næste gang du spg ang bat filer så for tæl lige hvilket styrestem du bruger fordi feks.
kommandoen choice findes ikke i xp >>>>
det var i gamle dage (win98<<) derfor laver jeg denne kommando " set /p choice"

og de forskellige OS har forskellige kommandoer

Kommentar
Fra : dos-man


Dato : 28-08-09 17:30

og foresten så er der en speciel kommando fra dengang som folk savner nemlig wait
men dent kan man nemt kome om ved ved at skrive dette
PING 1.1.1.1 -n 1 -w 5000 >NUL

dvs. at den venter 5 sekunder og går vidre til næste kommando
her er et eks.
@echo Off
echo.
echo hej venter lige 5 sekunder
PING 1.1.1.1 -n 1 -w 5000 >NUL
cls
echo det var de 5 sekunder
pause >nul

Kommentar
Fra : dos-man


Dato : 29-08-09 16:32

emhauge > er gået i stå ?
eller er du gået på druk ?

Kommentar
Fra : molokyle


Dato : 29-08-09 21:03

dos-man -> Giv nu liiiige emhauge en chance ...der er MEGET, som skal fordøjes

</MOLOKYLE>

Kommentar
Fra : emhauge


Dato : 31-08-09 15:29

Hej Dos-man

jeg har været sengeliggende de sidste par dage, men er ved at være klar igen - og ja, det er godt nok en ordentlig smøre virker den både med Vista og XP

ps. choice er genindført i Vista..... men korrekt, den virker ikke i 2000 og XP

/emhauge

Kommentar
Fra : dos-man


Dato : 01-09-09 11:06

her er også lige en metode at gøre det på ; jeg har ikke lavet det med spg om bruger og passwor
men kig på det::::
_-------------------------------------------------------------

@Echo Off
Set _FTPServer= her taster du din ftp server
Set _un= her taster du dit brugernavn
Set _pass= her taster du dit password
Set _scr1=ftp1
Set _scr2=ftp2
Call :_GetDate
If NOT EXIST C:\FTPFiles\FTP mkdir C:\FTPFiles\FTP
Set _LocalRoot=C:\FTPFiles\FTP
:: lav 1st script
>"%_scr1%" Echo open %_FTPServer%
>>"%_scr1%" Echo %_un%
>>"%_scr1%" Echo %_pass%
>>"%_scr1%" Echo lcd %_LocalRoot%
>>"%_scr1%" Echo dir -A ftpdir.txt
>>"%_scr1%" Echo quit
:: list af filer
ftp -s:"%_scr1%"
:: lav 2nd script hent filer
>"%_scr2%" Echo open %_FTPServer%
>>"%_scr2%" Echo %_un%
>>"%_scr2%" Echo %_pass%
>>"%_scr2%" Echo binary
>>"%_scr2%" Echo prompt
For /F "tokens=8*" %%I In ('findstr /B /I d %_LocalRoot%\ftpdir.txt') Do (
If NOT EXIST %_LocalRoot%\%%J mkdir %_LocalRoot%\%%J
>>"%_scr2%" Echo lcd %_LocalRoot%\%%J
>>"%_scr2%" Echo mget %%J
)
>>"%_scr2%" Echo quit
ftp -s:"%_scr2%"
Del "%_scr1%"
Del "%_scr2%"
dir /ad /b /s c:\FTPFiles > mapper.txt
cls
rd FTPFiles /q /s
type mapper.txt
del /q mapper.txt
pause


Kommentar
Fra : dos-man


Dato : 01-09-09 11:47

hey
jeg kan se at du kan slette denne linje
Call :_GetDate

den er der fordi jeg har lavet den orginale således at den tager datoen for "idag"

men den skulle kalde dette

""bare lige for en oplysnings skyld::::: (((ikke helt færdig med den )))))""

For /F "TOKENS=1* DELIMS= " %%A In ("%date%") Do Set _DATE=%%B
For /F "TOKENS=2* DELIMS= " %%A In ('REG QUERY "HKCU\Control Panel\International" /v iDate') Do Set _iDate=%%B
For /F "TOKENS=2* DELIMS= " %%A In ('REG QUERY "HKCU\Control Panel\International" /v sDate') Do Set _sDate=%%B
IF [%_DATE%]==[] (
IF %_iDate%==0 For /F "TOKENS=1-3* DELIMS=%_sDate% " %%B In ("%date%") Do Set _fdate=%%D%%B%%C
IF %_iDate%==1 For /F "TOKENS=1-3* DELIMS=%_sDate% " %%B In ("%date%") Do Set _fdate=%%D%%C%%B
IF %_iDate%==2 For /F "TOKENS=1-3* DELIMS=%_sDate% " %%B In ("%date%") Do Set _fdate=%%B%%C%%D
) ELSE (
IF %_iDate%==0 For /F "TOKENS=1-4* DELIMS=%_sDate% " %%A In ("%date%") Do Set _fdate=%%D%%B%%C
IF %_iDate%==1 For /F "TOKENS=1-4* DELIMS=%_sDate% " %%A In ("%date%") Do Set _fdate=%%D%%C%%B
IF %_iDate%==2 For /F "TOKENS=1-4* DELIMS=%_sDate% " %%A In ("%date%") Do Set _fdate=%%B%%C%%D
)

Godkendelse af svar
Fra : emhauge


Dato : 03-09-09 07:37

Tak for svaret dos-man. Stort set alle koder som jeg skulle bruge, fandtes i dit eksempel - der fra var der kun en masse benarbejde samt grublen over diverse fejl mm. MEN nu virker det "YES"

Tak for hjælpen, håber jeg må gøre brug af din viden igen en gang......


Hilsen
emhauge

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste