Problemas con un bacth

El batch es sencillo y corre perfectamente en windows xp (donde lo realize) perop al copiar al archivo y tratar de correrlo en otra maquina pero con win98 me marca error de sintaxis, y ademas me dice que los archivos no se encuentran o están en uso y se traba ojala me puedas ayudar.
El código es el siguiente:
@echo off
:Inicio
CLS
COLOR 1F
if exist c:\abaslealleon goto :msg1
if exist c:\abaslealroyal goto :msg2
:msg1
Echo.
Echo Estas en ROYAL deseas cambiar a Leal
echo.
goto menu
:msg2
Echo.
Echo Estas en LEAL deseas cambiar a Royal
echo.
goto menu
:Menu
Echo Seleccione su opción tecleando el numero respectivo.
Echo.
Echo 1. Si
Echo 2. No (Salir)
set /p var=
if %var%==1 goto :Primero
if %var%==2 goto exit
if %var% GTR 3 echo Error
goto :INICIO
:Primero
cls
color a
if exist c:\abaslealroyal goto croyal
if exist c:\abaslealleal goto cleal
:cleal
ren c:\abasleal abaslealroyal
ren c:\abaslealleal abasleal
goto fin
:croyal
ren c:\abasleal abaslealleal
ren c:\abaslealroyal abasleal
goto fin
:fin
Echo ======================
echo = =
Echo = PROCESO FINALIZADO =
echo = =
echo ======================
Echo Presione una tecla para volver al menu
Pause>Nul
goto :INICIO

1 respuesta

Respuesta
1
:Croyal
ren c:\abasleal abaslealleal 
Ren c:\abaslealroyal abaslealHola que hay
Se me ocurren varias cosas:
1) La secciones
:Cleal
ren c:\abasleal abaslealroyal
ren c:\abaslealleal abasleal
y
:croyal 
ren c:\abasleal abaslealleal
ren c:\abaslealroyal abasleal
Se me hace como que no se da suficiente tiempo para que abasleal sea renombrado, existiendo todavía, y al renombrar abaslealroyal a abasleal, como abasleal todavía existe, manda un error.
Prueba dandole algo de tiempo haciendo una pausa, por ejemplo:
:cleal 
ren c:\abasleal abaslealroyal
ping 127.0.0.1 > nul
ren c:\abaslealleal abasleal
* Una pregunta: Primero escribiste c:\abaslealleon. Todos los archivos (abaslealleon, abasleal, abaslealleal, y abaslealroyal) existen vdd?
------------------
2) Otras cosas que se me ocurren son: ¿Usas usuario administrador tanto en XP como en win 98? c: ¿Esta compartida un sistema y en otro no? Ya chequeaste los permisos que se tienen sobre C: ¿en win 98? Porque también se me ocurre la seguridad que traiga como predeterminado win 98 con C:
Te pongo un ejemplo:
Estoy haciendo una aplicación HTA (HTML Application) la cual te permite usar javascript o vbscript, y resulta que en XP puedo obtener C: y mostrar sus carpetas (Archivos de programa, windows, etc). Pero lo pruebo en Vista y, dependiendo de lo que trate de hacer con C:, o me manda "Acceso denegado" o me muestra Mis Documentos...
Por eso te lo pregunto
---------------------
Bueno, eso es lo que se me ocurre por el momento
Espero que te haya sido de ayuda y si no, coméntamelo...
Antes que nada gracias por tu respuesta, intente hacer lo que me mencionaste, en las dos maquinas tengo compartida la unidad c: y tengo permisos de administrador pero desgraciadamente me seguía mandando varios errores, como "el archivo no existe" y error de sintaxis y la pantalla de msdos parpadea..
En las 2 carpetas tengo archivos así que me pareció lógico darle tiempo a la hora de renombrar pero como te mencione, nada paso, así que intente cortar el código a solamente la parte principal la cual quedaría así:
if exist c:\abaslealroyal goto croyal
if exist c:\abaslealleal goto cleal
:croyal
ren c:\abasleal abaslealleal
ping 127.0.0.1 > nul
ren c:\abaslealroyal abasleal
goto fin
:cleal
ren c:\abasleal abaslealroyal
ping 127.0.0.1 > nul
ren c:\abaslealleal abasleal
goto fin
:Fin
Y sucede una cosa muy curiosa ya que siempre ejecuta la primera instrucción independientemente si cumple o no la sentencia, así que cuando en la unidad c si existe la carpeta abaslealroyal hace el cambio sin problemas pero cuando no existe de todas formas intenta correr el proceso :croyal. ¿Qué no se supone que debería saltarse aquellas sentencias que no cumplan con lo que se le pide? help me please!
Ok, deja lo checo.
Probablemente mañana te tenga algunas posibles opciones.
De todos modos, probaría en XP y Vista pues win98 ya no lo uso, pero ojala que le encontremos una solución...
a)
Escríbeme aunque sea que estas enterado, para que tu pregunta se coloque en mi sección de Nuevas preguntas.
A veces se me olvida cuales son las que tengo pendientes por contestar.
Mientras tanto, sigo haciendo algunas pruebas, y te contesto muy pronto
Pues no le doy amigo(a)
Tal cual con tu código, me funciona a la perfección.
No tengo ni idea de lo que pudiera estar pasando.
Se me ocurre que pruebes colocándole comillas:
if exist "c:\abaslealroyal" goto croyal
ren "c:\abasleal abaslealleal"
Aunque esto en realidad suena muy tonto.
Por otro lado, me estas dando las rutas (c:\abaslealroyal) pero quizá en tu batch estés usando variables para pasar esas rutas, por ejemplo:
set ruta1="c:\abaslealroyal"
if exist %%ruta1 goto croyal
Y haya algún error en esta sección.
Si no lo has hecho, porque no pruebas abriendo msdos, te vas a la ruta donde tienes tu batch, y lo ejecutas, y ves si el msdos manda algún mensaje de ruta no encontada o algo por el estilo.
Disculpa, pero no se que más pruebas pueda hacer, si me funciona bien tu código...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas