Título: Cambiar una letra de unidad extraible en batch
Publicado por: Zzz01Breikoft en 27 Septiembre 2014, 03:36 am
Hola, soy novato en esto de programación y pues estoy aprendiendo un poco y leyendo libros acerca de todo esto, también estoy llendo a cursos pero apenas estoy empezando, lo que pasa es que estoy creando un programa en batch que lo que hace es simple (nada nuevo) Primero me pregunta la unidad extraíble a la que quiero yo crear carpetas y de ahí no hace nada mas Dado que no se como rayos se hace eso, entonces estuve investigando un poco ejemplos de código de fuentes y me encontré algunos que me sirvieron para programa este programa, me ayudo mucho esta página (o foro o lo que sea que se le llame) Sin embargo ahora lo que quiero es que de la unidad en la que esta trabajando (por ejemplo la F:\) me la cambie a la unidad D:\ ya se que con cmd se hace con diskpart pero en batch sé que no será lo mismo, entonces pues ayudenme en mi programita, soy novato pero entenderé lo que estoy copiando Aquí está mi código de fuente: (el "scriptcarpeta" fue lo único que hice yo) color cf for /F "tokens=1-9* delims=:\ " %%a in ('fsutil fsinfo drives' ) do ( ) :Verificar fsutil fsinfo drivetype !unidad:~-0,1!: | findstr /s "fija extra" Set Unidad !num!=!unidad:~-0,1!: ) :Menu cls echo ======================== !num! UNIDADES ENCONTRADAS========================== echo ======================================================================= echo ======================UNIDADES !unidad1!!Unidad2!!Unidad3!!Unidad4!!Unidad5!!Unidad6!!Unidad7!!Unidad8!!Unidad9!DETECTADAS============================== echo ======================================================================= echo =====================PRESIONE LA LETRA DE LA UNIDAD==================== echo+ & echo No se encuentra la unidad %opcion::=%:... cls ) :scriptcarpeta echo ======================================================================= echo ======================================================================= echo ===========================CREANDO CARPETAS============================ md %opcion::=%:\Trabajos\Im genes md %opcion::=%:\Trabajos\Videos md %opcion::=%:\Trabajos\JDIFF md %opcion::=%:\Trabajos\JDIFF\DATA md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 1" md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 2" md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 3" md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 4" md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 5" md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 6" md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 3"\01.03.00 md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 3"\02.03.00 md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 3"\03.03.00 md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 4"\01.04.00 md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 4"\02.04.00 md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 4"\03.04.00 md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 5"\01.05.00 md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 5"\02.05.00 md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 5"\03.05.00 md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 6"\01.06.00 md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 6"\02.06.00 md %opcion::=%:\Trabajos\JDIFF\DATA\"Launcher 6"\03.06.00 md %opcion::=%:\Sistema\"About myself" md %opcion::=%:\Sistema\Programas md %opcion::=%:\Sistema\If_Then_History md %opcion::=%:\Sistema\M£sica md %opcion::=%:\Sistema\Pantalla md %opcion::=%:\Sistema\Temp md %opcion::=%:\Sistema\"About myself"\COMMANDS md %opcion::=%:\Sistema\"About myself"\"DATA DUMPS" md %opcion::=%:\Sistema\"About myself"\UNDOS attrib "About myself" +r +s +h attrib Temp +r +s +h attrib Sistema +r +s +h
Título: Re: Cambiar una letra de unidad extraible en batch
Publicado por: Eleкtro en 27 Septiembre 2014, 04:01 am
1) Las preguntas sobre Scripts van en esta sección.
2) Los códigos deben publicarse con el formato de código correcto (puedes leer mi firma si no te aclaras)
ya se que con cmd se hace con diskpart pero en batch sé que no será lo mismo, entonces pues ayudenme en mi programita, soy novato pero entenderé lo que estoy copiando Lo que conoces como CMD es Batch, y lo que conoces como Batch es CMD, el proceso CMD.exe es el intérprete del "lenguaje" Batch (lenguaje entre comillas, porque debido a su simpleza no se considera como tal), así pues, la CMD (o Command Prompt) es la aplicación encargada de procesar las órdenes/instrucciones que contiene un Script escrito en Batch (o Batch-Script), no hay más de lo que ya hayas visto usando la consola. Por lo tanto el método a realizar es el mismo, usando la herramienta Diskpart.exe (y también puedes hacerlo con MountVol.exe), ya que Batch debe recurrir a este tipo de aplicaciones externas (o " comandos externos") para ofrecer algún tipo de funcionalidad útil. Doy por hecho que ya sabes usar diskpart (o que de lo contrario vas a buscar en Google, o a mirar la ayuda del comando Diskpart.exe /? , MountVol.exe /?) y no necesitas más ayuda al respecto sabiendo que el procedimiento es exactamente el mismo en Batch, porque te estas refiriendo a eso al hablar de la CMD (en este caso). Saludos!
Título: Re: Cambiar una letra de unidad extraible en batch
Publicado por: Zzz01Breikoft en 27 Septiembre 2014, 04:10 am
Muchas gracias! me ayudaste mucho, creí que mi código estaba un poco mal :3
Título: Re: Cambiar una letra de unidad extraible en batch
Publicado por: Eleкtro en 27 Septiembre 2014, 05:25 am
creí que mi código estaba un poco mal :3 Si, estás usando malas practicas, los Strings deberías encerrarlos de principio a fin, no solamente las partes que contengan espacios, ya que resulta confuso, es bastante irreconocible en cualquier editor de texto (para programadores, no el notepad), y hacer eso no te asegura que no vayas a cometer equivocaciones en el resto del String. Aparte de eso, si tu intención es crear una variable por cada unidad encontrada entonces no es necesario setear 9 variables especificas, puedes crear las variables que hagan falta en tiempo de ejecución, o crear un menú con ellas, etc. Te escribo un ejemplo: :: Enumeración 'DriveType' de la Class 'Win32_LogicalDisk' de la Interface WMI. :: Documentación: http://msdn.microsoft.com/en-us/library/aa394173%28v=vs.85%29.aspx :: Cambio el directorio de trabajo actual. PUSHD " %SystemRoot%\System32" :: Ejecuto una Query al comando externo WMIC.exe y filtro la salida resultante. For /F "Delims= " %%# In ( '.\WBEM\WMIC.exe "logicaldisk" "get" "caption"^,"drivetype" ^| .\FindStr.exe "%HardDisk% %RemovableDisk%"' :: Obtengo las letras de los dispositivos conectados. ) :: Simple Debug. REM Echo [Debug] Unidades encontradas: %DRIVES% :: Elimino la letra de unidad desde la que se inició este Script; :: ya que la letra de la unidad activa (del SO) no se podrá modificar. :: Doy por hecho que se ejecutó desde la unidad activa del SO, de lo contrario esto necesita un retoque. :: Reemplazo el caracter ":" del resto de letras por un caracter de "espacio"; :: de esta manera puedo usar el delimitador por defecto ("espacio") en un For. Set "DRIVES= %DRIVES::= %" :: Por último, proceso cada letra de unidad para crear variables de manera dinámica. Set /A "Count+=1" & REM Incremento el contador. Call Set "_ %%Count%%=%%D" & REM Seteo la variable con el número del contador. Call Set "INPUT= %%INPUT%%%%D" & REM Asigno la letra de unidad a la variable. ) :: Pregunto al usuario por una letra de unidad. ".\Choice.exe" /C "%INPUT%" /M "Elige una letra de unidad" Set /A "CHOICE= %ErrorLevel%" & REM Guardo el resultado. Call Set "DRIVE= %%_ %CHOICE%%%" & REM Seteo la letra de unidad elegida. :: Y manejo la unidad de la forma que se desee: Call Echo Listado de carpetas: de la unidad " %DRIVE%:\" | .\More.com :: Vuelvo al directorio de trabajo inicial.
Saludos
|