Ayuda con ms-dos

Iniciado por ayleid, 15 Octubre 2010, 00:10 AM

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

ayleid

WEnassss...Mirad estoy intendando hacer lo siguiente en ms-dos:

He creado un disket de arranque con ntfs4dos copiado encima de un diskete de arranque hecho desde mipc-> formatear.

El problema viene con un .bat k intento ejecutar... el diskete arranca, me ve las unidades ntfs y fat pero.... al parecer quiero hacer que el usuario introduzca una variable con:

set /p letra= "Letra de unidad (solo letra sin dos puntos)"

copy %letra%:\a.txt %letra%:\a-backup.txt
copy /Y %letra%:\c.txt %letra%:\a.txt

echo ARCHIVOS SUSTITUIDOS CORRECTAMENTE!!!
pause
exit


EL problema es que con el set /p me dice "too many arguments" o "Syntax error" hay alguna manera de preguntar al usuario de otra forma??

REsumiendo: lo que quiero hacer es que el usuario introduzca la letra de unidad que ve en el ntfs4dos en mi batch y que el batch con esa letra la ponga en el copy y me haga la sustitucion de arhcivos...

alguna idea del error pork yo no lo veo jajajajaaj

PD: en el cmd de inicio ejecutar va bien es lo que no entiendo...
Placa base: GA-x48-DQ6
CPU: INTEL Q8200 2.33 GHZ 1333mhz fsb
Tarjeta grafica: ATI HD 5770 1Gb + Nvidia En210 (Physx mod)
Ram: 8GB kingston a Dual channel ddr2
Sonido: 5.1
OS: WIndows 7 ultimate  x64 bits

KuraraGNU

No sabía lo que hacía el set /p, así que busqué por internet, ya que W7 no tiene consola, me pone esto:

set /P variable=
Esto sirve para que el programa permita al usuario escribir algo, que será luego usado como una variable, se escribe /P después de set y el valor se deja vacío.


Tú no lo dejas vacío ¿me equivoco? ¿O has puesto eso simplemente para que lo veamos? Si quieres que vean el mensaje escribe en la línea de encima de set /p un echo y lo pones.

ayleid

sip, yo no lo dejo vacio pork quiero k salga la pregunta xdd

Asi que kdaria asi no?-->

echo
set /p variable=
Placa base: GA-x48-DQ6
CPU: INTEL Q8200 2.33 GHZ 1333mhz fsb
Tarjeta grafica: ATI HD 5770 1Gb + Nvidia En210 (Physx mod)
Ram: 8GB kingston a Dual channel ddr2
Sonido: 5.1
OS: WIndows 7 ultimate  x64 bits

KuraraGNU

Concretamente así

Código (dos) [Seleccionar]
echo escriba la Letra de unidad (solo letra sin dos puntos)
set /p letra=

ayleid

gracias por responder :)

pero lo pongo asi y el Ms-dos lo que hace es saltarse la linea del set P
y pone obviamente archivo no entontrado....
no se pero desde Inicio--ejecutar--cmd el bat va al 100% pero desde un ms-dos (me he dao cuenta de que es WIndows millenium 4.0 no se si esto afecta en algo)
pero me es imposible desde el diskette de arranque...
Placa base: GA-x48-DQ6
CPU: INTEL Q8200 2.33 GHZ 1333mhz fsb
Tarjeta grafica: ATI HD 5770 1Gb + Nvidia En210 (Physx mod)
Ram: 8GB kingston a Dual channel ddr2
Sonido: 5.1
OS: WIndows 7 ultimate  x64 bits

ayleid

Cosa nueva... he formateado el diskette como un diskette de arranque pero ahora si que es seguro ms-dos 6.22  igualmente cuando llega al set /p letra= se lo salta y da error :S

alguna idea por ahi?
Placa base: GA-x48-DQ6
CPU: INTEL Q8200 2.33 GHZ 1333mhz fsb
Tarjeta grafica: ATI HD 5770 1Gb + Nvidia En210 (Physx mod)
Ram: 8GB kingston a Dual channel ddr2
Sonido: 5.1
OS: WIndows 7 ultimate  x64 bits

KuraraGNU

A ver, así de primeras se me ocurre una cosa, con el ordenador encendido, si ejecutas el .bat te va perfectamente ¿no? Sin embargo, con el diskete de arraqnque no ¿cierto? Pues esto es porque en el diskete de arranque, no se tienen todos los comandos que se tienen en la versión de windows entera, sólo algunos comandillos, los justos para formatear e iniciar windows, los cuales se encuentran en command.com o algo así.

Mira a ver en el disco de arranque en el modo explorar si lo ves, o haz un /help desde el arranque a ver si te sale todos los comandos que tiene (no se si el /help funcionará). Podrías intentar, meter manualmente el set.bat o como se llame (estará en windows/system32/bin o algo así, es que no tengo xp así que no puedo mirartelo :() en el disco de arranque, ahora mismo me pongo a buscar qué comandos están en el command.com y te comento.

~

También esto:

@set letra=%1
@echo La letra de la unidad es %letra%


El %1 es el primer parámetro de la líea de comandos.

Cuando se declara una variable, como "letra", se escribe normalmente, pero cuando se vuelve a usar se usa entre 2 signos de porcentaje, en este caso se escribe %letra% para usar el valor después de declarada.

Para correrlo sería algo como:

MiBat.bat C:
Sitio web (si la siguiente imagen no aparece es porque está offline):

KuraraGNU

#8
Pues también, que estoy tonta, mira que no acordarme de eso XD

Bueno pues hale, lo voy a hacer entero a ver XD

Código (dos) [Seleccionar]
@echo off
rem Comprobamos que ha introducido la letra
if "%1" == "" goto sintaxis

copy %1%:\a.txt %l1%:\a-backup.txt
copy /Y %1%:\c.txt %1%:\a.txt

rem comprobamos que no haya habido nigún error
if errorlevel 1 goto error
goto correcto

:sintaxis
echo Escriba la Letra de unidad (solo letra sin dos puntos)
goto fin
:error
echo Error al construir el fichero
goto fin
:correcto
echo ARCHIVOS SUSTITUIDOS CORRECTAMENTE!!!
pause
:fin
exit


El errorlevel se evalúa si es mayor o igual, estos son los casos de errorlevel para copiar archivos
Código            Significado
0       Los ficheros fueron copiados sin error.
1       No se encontraron ficheros para copiar.
2       El usuario presionó Ctrl+Pausa para suspender el proceso de Xcopy.
4       Ocurrió un error de inicio. No hay suficiente memoria o espacio en el disco, se introdujo  
       un nombre de unidad no válida o se utilizó una sintaxis incorrecta en la línea de órdenes.
5       Ocurrió un error de escritura de disco.