elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Batch] ¿Cómo leer caracteres y concatenar hasta cierto carácter?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] ¿Cómo leer caracteres y concatenar hasta cierto carácter?  (Leído 1,209 veces)
lsfer010

Desconectado Desconectado

Mensajes: 4


Ver Perfil
[Batch] ¿Cómo leer caracteres y concatenar hasta cierto carácter?
« en: 20 Octubre 2017, 05:51 am »

Buen día amigos, creo este tema con el fin de que me puedan ayudar a poder terminar esta aplicación. Anteriormente hice un tema sobre cómo podia mover archivos con variables en batch (para poder organizar unas rooms), y me ayudaron a resolver ese problema. Ahora necesito automatizar este proceso, ya que el programa me pide los datos y ahora necesito que haga esto:

-El programa debe ubicarse en un directorio y leer el nombre del primer fichero que se encuentre en ese directorio, guardándolo en una variable (Por ejemplo: !nombrecompleto! (Ya lo pude hacer))

-Ahora que guardo ese nombre en una variable, necesito que vaya tomando, concatenando y guardando esos caracteres en otra variable, hasta que se encuentre un "(" y termine el proceso. (A esta variable le llamaremos nombre)

-En otra variable, hacer lo mismo pero solo debe guardar los caracteres que estén después del "(" y antes de un ")"

Pongamos otro ejemplo:
1. El programa al ejecutarse, debe ubicarse en "L:\J Pednitentes\SISTEMAS SIN ORGANIZAR\PC\MSX\MSX2\Games\[DSK]" y después guardar en la variable !nombrecompleto! el nombre del primer fichero en ese directorio, en este caso "Mattix (19xx)(Pack In Video)(JP).dsk"
2. Ya que tenemos !nombrecompleto! con el valor de "Mattix (19xx)(Pack In Video)(JP).dsk" debe guardar en otra variable llamada !nombre! solo "Mattix" y en otra variable llamada !fecha! solo "19xx" (NOTA: notese que entre "Mattix" y "(19xx)" hay un espacio, se debe eliminar cuando se guarde el nombre)

Y básicamente es lo que buscaría, ya todo el proceso que sigue esta hecho y funciona.
Ya me han recomendado utilizar PowerShell mejor que en batch por lo limitado en sus funciones, el problema es que debido al poco tiempo que me deja la uni no me da para poder estudiar PowerShell, por eso quería terminar esta aplicación en batch.
Se que puede haber problemas, donde pueda haber un "(" entre el nombre y guardar algo que no quería, pero ya revise todas las rooms y ninguna tiene en medio un "(" que pueda generar problemas, ademas de que el proceso se repeteria una vez y pausaria mientras monitoreo en el explorador de archivos si el archivo que sigue no presenta problemas para estas condiciones o mejor lo acomodo manualmente.

Les comparto el código que he hecho:
Código:
@Echo OFF & Title Mover Archivo
SetLocal EnableDelayedExpansion
cd L:\J Pednitentes\SISTEMAS SIN ORGANIZAR\PC\MSX\MSX2\Games\[DSK]\
For %%a in (*.dsk) do (
Echo %%a
set nombrecompleto=%%a
Goto SAL
)
:SAL
rem todo lo que esta aqui arriba hace el proceso de tomar el primer nombre del directorio, y a continuacion deberia seguir todo el proceso para hacer la division de cadenas que explique anteriormente
set/p "nombre=Introduzca nombre:"
set/p "fecha=Introduzca fecha:"
rem esta parte de arriba es la que quiero eliminar, pues pide los datos, sin embargo quiero que los obtenga automaticamente, todo el proceso que sigue abajo no es necesario modificar
md "!nombre!"
cd !nombre!
md "!fecha! - !nombre!"
cd !fecha!" - "!nombre!
md "MSX MSX2"
cd MSX MSX2
md DSK
move "L:\J Pednitentes\SISTEMAS SIN ORGANIZAR\PC\MSX\MSX2\Games\[DSK]\!nombre!*.dsk" "L:\Juegos 2\!nombre!\!fecha! - !nombre!\MSX MSX2\DSK"
cd L:\Juegos 2
pause
start prueba.bat rem esto para volver a ejecutar la aplicacion y repetir el proceso una vez que haya revisado en el explorar y dé enter.
exit

Es posible que me comenten que se puede reducir el código para crear los directorios, el problema es que me da problemas al meter todo en una variable, por eso decidí dejarlo así, aun así me funciona.
Agradecería mucho su ayuda! ya que con ello podría ahorrar muchísimo tiempo. Saludos a todos.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines