Avatar billede benneharli Juniormester
10. november 2006 - 11:41 Der er 11 kommentarer og
1 løsning

DOS batch problem

Jeg har et lille problem

Alt efter om ordet "tripped" findes i en fil, skal jeg starte en aplikation

Her er hvad jeg har lige nu. Det scriptet gor, at at starte word hvis filen "hola.TXT" findes. Nu vil jeg gerne have scriptet til at starte word, men KUN hvis ordet "tripped" findes i filen. Tror det er noget med:

FIND "tripped" C:\Db\hola.TXT

og saa gemme det i en variabel

-->

@ECHO OFF
:start

IF EXIST C:\Db\hola.TXT (
C:\Archiv~1\Micros~2\Office10\WINWORD.EXE
del C:\Db\hola.TXT) else (
del C:\Db\hola.TXT)

start /w wscript.exe sleep.vbs

goto start

<--
10. november 2006 - 12:01 #1
Noget i retning af

FIND tripped C:\Db\hola.TXT >nul
IF ERRORLEVEL 1 GOTO FOUND

:FOUND
(osv osv osv)


Yderliger -> http://www.computerhope.com/batch.htm#4

PS:
http://users.cybercity.dk/~bse26236/batutil/help/BATCHSUP.HTM#8.01
eller
http://malektips.com/dos0017.html (den bruger jeg selv...)
er et alternativt trix mht SLEEP
Avatar billede benneharli Juniormester
10. november 2006 - 12:11 #2
virker ikke helt efter hensigten... det der med errorlevel.. kunne det uddybes?
Avatar billede benneharli Juniormester
10. november 2006 - 12:21 #3
fandt det her... er det noget der kan bruges?

set FOUND=false
type SomeFile.txt | find "TheString" > $1.$$$
copy $1.$$$ $2.$$$ > nul
if exist $2.$$$ set FOUND=true
for %%f in ($1.$$$ $2.$$$) do if exist %%f del %%f
echo FOUND %found%
10. november 2006 - 12:26 #4
Når en kommando i BATCH skydes af sætte variablen ERRORLEVEL til et tal afhængig af reslutatet fra givne kommando ...

I dit tilfælde

type C:\Db\hola.TXT | find "tripped" >nul
if ERRORLEVEL 0 goto FOUND
goto REPEAT

:FOUND
(osv osv osv osv)
Avatar billede benneharli Juniormester
10. november 2006 - 12:30 #5
ja, men der er to muligheder. Enten er ordet "tripped" i filen, eller ogsaa er det ikke.

hvis det er skal der ske en ting, hvis det ikke er skal der ske noget andet.

Jeg har provet, og uandset hvad startes (i det her tilfaelde) word...

-->

@ECHO OFF
:start

type C:\Db\hola.TXT | find "tripped" >nul
if ERRORLEVEL 0 goto FOUND

:FOUND
C:\Archiv~1\Micros~2\Office10\WINWORD.EXE
del C:\Db\hola.TXT
goto END

:NOTFOUND
IF EXIST C:\Db\hola.TXT (
del C:\Db\hola.TXT)

:END

start /w wscript.exe sleep.vbs

goto start
Avatar billede benneharli Juniormester
10. november 2006 - 12:37 #6
har lige vendt den om... virker stadig ikke. word bliver startet ogsaa selvom filen hola.TXT ikke eksisterer

-->

:start

type C:\Db\hola.TXT | find "tripped" >nul
if ERRORLEVEL 0 goto FOUND

:NOTFOUND
echo notfound
IF EXIST C:\Db\hola.TXT (
del C:\Db\hola.TXT)
goto END

:FOUND
echo found
C:\Archiv~1\Micros~2\Office10\WINWORD.EXE
del C:\Db\hola.TXT

:END

start /w wscript.exe sleep.vbs

goto start
10. november 2006 - 12:47 #7
Lige en hurtig:

Der går måske kludder i FIND + ERRORLEVEL hvis selve filen C:\Db\hola.TXT slet ikke findes ?
Du skal nok bygge en Loop mere ind som kun checker om selve filen C:\Db\hola.TXT er blevet oprettet eller ej.

Hvis den pludselig er oprettet SÅ over i loopen med FIND + ERRORLEVEL ...
Avatar billede pidgeot Nybegynder
10. november 2006 - 12:50 #8
Lige en lille bemærkning - IF ERRORLEVEL X giver sand hvis ERRORLEVEL er >= X, ikke kun hvis den er lig X. Derfor vil en IF ERRORLEVEL 0 altid blive sand.

(væk igen)
Avatar billede benneharli Juniormester
10. november 2006 - 13:02 #9
kan man ikke aktivere en variabel hvis teksten "tripped" findes?
kan ikke faa errorlevel til at virke
Avatar billede jhe-ting Nybegynder
10. november 2006 - 15:58 #10
HUSK ALTID:

Når der checkes for dos-errorlevel med sætninger som

IF ERRORLEVEL xx

så skal de testes i FALDENDE orden altså

IF ERRORLEVEL 255 GOTO very_bad
IF ERRORLEVEL 125 GOTO bad
IF ERRORLEVEL  25 GOTO almost_good
IF ERRORLEVEL  0 GOTO success

ERRORLEVEL 0 er altid opfyldt
-----------------------------


Dette burde give ønsket resultat:
=================================

:start

type C:\Db\hola.TXT | find "tripped" >nul
if ERRORLEVEL 1 goto NOTFOUND

:FOUND
echo found
C:\Archiv~1\Micros~2\Office10\WINWORD.EXE
del C:\Db\hola.TXT
goto END

:NOTFOUND
echo notfound
IF EXIST C:\Db\hola.TXT (
del C:\Db\hola.TXT)

:END

start /w wscript.exe sleep.vbs

goto start
Avatar billede benneharli Juniormester
10. november 2006 - 16:20 #11
PERFEKT ;-)
Avatar billede jhe-ting Nybegynder
10. november 2006 - 16:31 #12
Tak og held og lykke :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester