Problema con condigo If Exist y For

Iniciado por xBart, 10 Noviembre 2017, 23:56 PM

0 Miembros y 2 Visitantes están viendo este tema.

xBart

Buenas tardes, tengo este código de batch, pero no me funciona el "else". La idea es que si no encuentra las extensiones mencionadas, me debería abrir paint-.

De antemano gracias.


@ECHO OFF
for %%i in (*.txt *.pdf *.jpg) do (
IF EXIST %%i (goto del) else (goto sla)
:del
echo abrira la calculadora
calc.exe
exit
:sla
echo abrira paint
mspaint.exe
)
cls
pause
No hay ser humano inteligente, que aquel que no lee...

**Aincrad**

#1
bueno el codigo que pusiste arriba el error esta en for %%i in (*.txt *.pdf *.jpg) do

bueno mejor haslo de esta manera:  

Código (bash) [Seleccionar]
@echo off
:txt
       if exist *.txt == (goto del) else (goto pdf)
:pdf
       if exist *.pdf == (goto del) else (goto jpg)
:jpg
       if exist *.jpg == (goto del) else (goto sla)
exit

:::::::::::::::::::::::::::::
:del
:::::::::::::::::::::::::::::
echo abrira la calculadora
calc.exe
exit

:::::::::::::::::::::::::::::
:sla
:::::::::::::::::::::::::::::
echo abrir paint
mspaint.exe
cls
pause





xBart

No hay ser humano inteligente, que aquel que no lee...

**Aincrad**

Perdón , como tengo el internet lentísimo no me di de cuenta que el code no se había publicado .  :)

PD:              TE FUNCIONO? 




xBart

Pues, en teoría debería funcionar. Lo había hecho de esa manera porque quería hacerlo simplificado, es decir; englobar el if exist.

Muchas gracias, seguiré intentando, si no puedo, tendré que hacerlo de esa manera, if exist linea por linea
No hay ser humano inteligente, que aquel que no lee...

**Aincrad**

#5
si, lo querias hacer de esta forma:

for %%i in (*.txt *.pdf *.jpg) do (
IF EXIST %%i (goto del) else (goto sla)


déjame decirte que el *.pdf *.jpg no tenían ninguna función hay.

ya que el BATCH al verificar si existe algún txt  "*.txt" va a obviar los  *.pdf *.jpg .

no se si me explico . lo que quiero decir es que si quieres que el batch busque *.pdf *.jpg tienes que hacerlo por paso . como el code que te puse . en cambio si lo haces de la forma for %%i in (*.txt *.pdf *.jpg) que de paso esta mal codeado , el batch va a obviar los *.pdf *.jpg osea no los va a buscar.






xBart

Si amigo te entiendo. Gracias por tus respuestas. Lo haré de por separado.  ;)
No hay ser humano inteligente, que aquel que no lee...

**Aincrad**

un ejemplo de lo que te quiero decir :

if exist *.txt == (goto del) else (goto sla)
if exist *.pdf == (goto del) else (goto sla)
if exist *.jpg == (goto del) else (goto sla)


este code es lo mismo que for %%i in (*.txt *.pdf *.jpg) como ves ya con la primera linea el batch se salta la segunda y la tercera.

osea le dices : si existe elgun txt te vas a del y si no te vas a sla . y ya con eso el batch no lee las otras dos lineas . no se si me di a entender .




xBart

Si amigo, lo entiendo, lo que pasa es que en esta linea de código:

for %%i in (*.txt *.pdf *.jpg) do

iba probando con ir agregando archivos .txt, archivos .pdf y .jpg. Eliminaba manualmente los txt y verificaba que si encontrara los pdf, después eliminaba los pdf y verificaba que encontrara los jpg, y pues si funcionaba, pensé que podría funcionar el exist para todas las extensiones. y no nada más para uno.

Pero lo haré por separado. Muchas gracias por tus mensajes. Saludos
No hay ser humano inteligente, que aquel que no lee...

**Aincrad**

#9
En ese caso como no te has dado cuenta , aqui te lo dejo:  :silbar:

Código (bash) [Seleccionar]
@echo off
for %%i in (*.txt *.pdf *.jpg) do (IF EXIST %%i (goto del) else (goto sla) )

:::::::::::::::::::::::::::::
:del
:::::::::::::::::::::::::::::
echo abrira la calculadora
calc.exe
exit

:::::::::::::::::::::::::::::
:sla
:::::::::::::::::::::::::::::
echo abrir paint
mspaint.exe
cls
pause


te habia dicho donde estaba el error pero no me has prestado atención , en fin te lo dejo como lo queria en un principio.
el error era el símbolo ) que pusiste en
mspaint.exe
)
cls


ese paréntesis es mal ubicado . para la próxima haber si te fijas . XD  :silbar:

                                            Comenta si te funciono.