Personalizar Batch

Iniciado por Pédrin-2, 16 Septiembre 2013, 19:02 PM

0 Miembros y 1 Visitante están viendo este tema.

Pédrin-2

Hola EleKtro H@cker.
lamento que te tenga que molestar tanto, no se que vas ha hacer conmigo, estoy saturado de hacer pruebas y no consigo nada.
no consigo que lo que sale en pantalla ( los nombres con la primera letra en mayuscula se copien en la carpeta ) he probado de todo.
Me he atascado con esto y no puedo mas
te pongo el codigo a ver que se puede hacer:

@Echo OFF
set/p nombre="Nombre de Cliente:"
set nombre=%nombre%

set guion=-
for /f "tokens=1,2,3,4,5 delims=/" %%i in ('date /t') do (
set ano=%%k
set dia=%%i
set mes=%%j
Set ToWordCase=%Alphabet%
set nombre=%nombre%)
set cadena=%ano%%guion%%mes%%guion%%dia% %ToWordCase%%nombre%
set directorio=%1

rem copy "%:ToWordCase%" "%cadena%"
Setlocal EnableDelayedExpansion
Call :ToWordCase "%nombre%"
Echo+
Pause&Exit
:ToWordCase
Set "Alphabet=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For %%# in (%~1) do (
Set "Word=%%#"
Set "Char=!Word:~0,1!"
If "!Char!" EQU "a" (Set "X=%Alphabet:~0,1%")
If "!Char!" EQU "b" (Set "X=%Alphabet:~1,1%")
If "!Char!" EQU "c" (Set "X=%Alphabet:~2,1%")
If "!Char!" EQU "d" (Set "X=%Alphabet:~3,1%")
If "!Char!" EQU "e" (Set "X=%Alphabet:~4,1%")
If "!Char!" EQU "f" (Set "X=%Alphabet:~5,1%")
If "!Char!" EQU "g" (Set "X=%Alphabet:~6,1%")
If "!Char!" EQU "h" (Set "X=%Alphabet:~7,1%")
If "!Char!" EQU "i" (Set "X=%Alphabet:~8,1%")
If "!Char!" EQU "j" (Set "X=%Alphabet:~9,1%")
If "!Char!" EQU "k" (Set "X=%Alphabet:~10,1%")
If "!Char!" EQU "l" (Set "X=%Alphabet:~11,1%")
If "!Char!" EQU "m" (Set "X=%Alphabet:~12,1%")
If "!Char!" EQU "n" (Set "X=%Alphabet:~13,1%")
If "!Char!" EQU "o" (Set "X=%Alphabet:~14,1%")
If "!Char!" EQU "p" (Set "X=%Alphabet:~15,1%")
If "!Char!" EQU "q" (Set "X=%Alphabet:~16,1%")
If "!Char!" EQU "r" (Set "X=%Alphabet:~17,1%")
If "!Char!" EQU "s" (Set "X=%Alphabet:~18,1%")
If "!Char!" EQU "t" (Set "X=%Alphabet:~19,1%")
If "!Char!" EQU "u" (Set "X=%Alphabet:~20,1%")
If "!Char!" EQU "v" (Set "X=%Alphabet:~21,1%")
If "!Char!" EQU "w" (Set "X=%Alphabet:~22,1%")
If "!Char!" EQU "x" (Set "X=%Alphabet:~23,1%")
If "!Char!" EQU "y" (Set "X=%Alphabet:~24,1%")
If "!Char!" EQU "z" (Set "X=%Alphabet:~25,1%")
< Nul Call Set /P "=!X!!Word:~1! "

)

start cmd.exe /c "CD %directorio% && Md """%cadena%""""





Por favor Paciencia con un novato

Un saludo
Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo

Eleкtro

#11
Hombre pues claro... si copias el código sin más es obvio que no te va a funcionar, debes ajustarlo a tus necesidades.

Sin examinar detalládamente el code, para empezar el code que te puse no almacena el resultado en ninguna variable, imprime el output diréctamente.
Creo que no debería ser necesario una explicación sobre como deberías modificarlo, pero bueno:
Set "Words=!Words!!X!!Word:~1! "
(Dentro de la subrutina)

CitarSet ToWordCase=%Alphabet%
Ahí no le estás asignando ningún valor, porque no hay ninguna variable que se llame "alphabet" fuera de la subrutina :ToWordCase.

Citarset cadena=%ano%%guion%%mes%%guion%%dia% %ToWordCase%%nombre%
towordcase está vacia porque alphabet tambien está vacia.

Cita de: Pédrin-2 en 19 Septiembre 2013, 00:42 AMSetlocal EnableDelayedExpansion
Esa orden deberías ponerla al principio del script junto al "@Echo OFF".

saludos








Pédrin-2

Por favor no te enfades que tu este tema lo tienes mas que ....
Mañana pruebo lo que me comentas y te digo  ( espero que ya haya resuelto el problema).
Ya es muy tarde.

Un saludo y gracias por tu tiempo
Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo

Pédrin-2

Me rindo
tiro la toalla
:-[  >:D
Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo

Eleкtro

Cita de: Pédrin-2 en 20 Septiembre 2013, 01:19 AM
Me rindo
tiro la toalla
:-[  >:D

no te rindas, muestra lo que llevas hecho








Pédrin-2

Gracias por ayudarme

a parte de hacer pruebas, y buscar informacion de almacenar el resultado en variables
y no se como adptarlo a mi batch


@Echo OFF
rem Esa orden deberías ponerla al principio del script junto al "@Echo OFF". ( en vez de junto la pongo debajo para que funcione )

Setlocal EnableDelayedExpansion
set/p nombre="Nombre de Cliente:"
set nombre=%nombre%

set guion=-
for /f "tokens=1,2,3,4,5 delims=/" %%i in ('date /t') do (
set ano=%%k
set dia=%%i
set mes=%%j
rem Set ToWordCase=%words%
Set ToWordCase=%Alphabet%
Set Alphabet=%Words%
set nombre=%nombre%

rem (Dentro de la subrutina)
Set "Words=!Words!!X!!Word:~1! ")    
rem set cadena=%ano%%guion%%mes%%guion%%dia% %ToWordCase%%nombre%
set cadena=%ano%%guion%%mes%%guion%%dia% %Alphabet%%nombre%
rem set cadena=%ano%%guion%%mes%%guion%%dia% %Words%%nombre%
set directorio=%1


Call :ToWordCase "%nombre%"
Echo+
rem Pause&Exit
:ToWordCase
Set "Alphabet=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For %%# in (%~1) do (
Set "Word=%%#"
Set "Char=!Word:~0,1!"
If "!Char!" EQU "a" (Set "X=%Alphabet:~0,1%")
If "!Char!" EQU "b" (Set "X=%Alphabet:~1,1%")
If "!Char!" EQU "c" (Set "X=%Alphabet:~2,1%")
If "!Char!" EQU "d" (Set "X=%Alphabet:~3,1%")
If "!Char!" EQU "e" (Set "X=%Alphabet:~4,1%")
If "!Char!" EQU "f" (Set "X=%Alphabet:~5,1%")
If "!Char!" EQU "g" (Set "X=%Alphabet:~6,1%")
If "!Char!" EQU "h" (Set "X=%Alphabet:~7,1%")
If "!Char!" EQU "i" (Set "X=%Alphabet:~8,1%")
If "!Char!" EQU "j" (Set "X=%Alphabet:~9,1%")
If "!Char!" EQU "k" (Set "X=%Alphabet:~10,1%")
If "!Char!" EQU "l" (Set "X=%Alphabet:~11,1%")
If "!Char!" EQU "m" (Set "X=%Alphabet:~12,1%")
If "!Char!" EQU "n" (Set "X=%Alphabet:~13,1%")
If "!Char!" EQU "o" (Set "X=%Alphabet:~14,1%")
If "!Char!" EQU "p" (Set "X=%Alphabet:~15,1%")
If "!Char!" EQU "q" (Set "X=%Alphabet:~16,1%")
If "!Char!" EQU "r" (Set "X=%Alphabet:~17,1%")
If "!Char!" EQU "s" (Set "X=%Alphabet:~18,1%")
If "!Char!" EQU "t" (Set "X=%Alphabet:~19,1%")
If "!Char!" EQU "u" (Set "X=%Alphabet:~20,1%")
If "!Char!" EQU "v" (Set "X=%Alphabet:~21,1%")
If "!Char!" EQU "w" (Set "X=%Alphabet:~22,1%")
If "!Char!" EQU "x" (Set "X=%Alphabet:~23,1%")
If "!Char!" EQU "y" (Set "X=%Alphabet:~24,1%")
If "!Char!" EQU "z" (Set "X=%Alphabet:~25,1%")
< Nul Call Set /P "=!X!!Word:~1! "

)

start cmd.exe /c "CD %directorio% && Md """%cadena%""""



Un Saludo

PD  No te rias de lo malo que soy, me parezco al niño que le estan enseñando a caminar  y la verdad que es bastante frustante
Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo

Eleкtro

#16
Ay señor... No me rio, todos hemos sido novatos, pero es que tienes que leer un poco sobre el lenguaje y practicarlo unas cuantas veces antes de ponerte a hacer códigos sin saber.


Código (dos) [Seleccionar]
@Echo OFF & Setlocal EnableDelayedExpansion

Set "DirPath=%*"
If "%DirPath:~-1%" EQU "\" (Set "DirPath=%DirPath:~0,-1%")

Set /P "Name=Nombre de Cliente:"
Call :ToWordCase "%Name%"

Set "FullPath=%DirPath%\%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%%WordCaseName%"

MKDIR "%FullPath%" && (Explorer "%FullPath%")

Pause&Exit

:ToWordCase
Set "Alphabet=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For %%# in (%~1) do (
Set "Word=%%#"
Set "Char=!Word:~0,1!"
If "!Char!" EQU "a" (Set "X=%Alphabet:~0,1%")
If "!Char!" EQU "b" (Set "X=%Alphabet:~1,1%")
If "!Char!" EQU "c" (Set "X=%Alphabet:~2,1%")
If "!Char!" EQU "d" (Set "X=%Alphabet:~3,1%")
If "!Char!" EQU "e" (Set "X=%Alphabet:~4,1%")
If "!Char!" EQU "f" (Set "X=%Alphabet:~5,1%")
If "!Char!" EQU "g" (Set "X=%Alphabet:~6,1%")
If "!Char!" EQU "h" (Set "X=%Alphabet:~7,1%")
If "!Char!" EQU "i" (Set "X=%Alphabet:~8,1%")
If "!Char!" EQU "j" (Set "X=%Alphabet:~9,1%")
If "!Char!" EQU "k" (Set "X=%Alphabet:~10,1%")
If "!Char!" EQU "l" (Set "X=%Alphabet:~11,1%")
If "!Char!" EQU "m" (Set "X=%Alphabet:~12,1%")
If "!Char!" EQU "n" (Set "X=%Alphabet:~13,1%")
If "!Char!" EQU "o" (Set "X=%Alphabet:~14,1%")
If "!Char!" EQU "p" (Set "X=%Alphabet:~15,1%")
If "!Char!" EQU "q" (Set "X=%Alphabet:~16,1%")
If "!Char!" EQU "r" (Set "X=%Alphabet:~17,1%")
If "!Char!" EQU "s" (Set "X=%Alphabet:~18,1%")
If "!Char!" EQU "t" (Set "X=%Alphabet:~19,1%")
If "!Char!" EQU "u" (Set "X=%Alphabet:~20,1%")
If "!Char!" EQU "v" (Set "X=%Alphabet:~21,1%")
If "!Char!" EQU "w" (Set "X=%Alphabet:~22,1%")
If "!Char!" EQU "x" (Set "X=%Alphabet:~23,1%")
If "!Char!" EQU "y" (Set "X=%Alphabet:~24,1%")
If "!Char!" EQU "z" (Set "X=%Alphabet:~25,1%")
Set "WordCaseName=!WordCaseName! !X!!Word:~1!"
)



Saludos!








Pédrin-2

Hola EleKtro H@cker
hay algo que no funciona porque no me deja escribir el nombre ( no hace la pausa), ni me crea la carpeta
lo que ve es que en el codigo que has puesto el Setlocal lo tienes del mismo color que ejem, Echo sin en cambio en mi notepad ++ no sale de color azul, sale negro.

sabes que puede pasar ??

Un saludo
Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo

Eleкtro

#18
Vamos por partes,

El código es 100% funcional, no uses Notepad++, abre el Bloc de notas, pega el código, y guárdalo con codificación ANSI.

Si te sigue sin funcionar, comenta el modo en el que lo estás intentando usar.

EDITO:
Dime una cosa... ¿No será que tu estás intentando abrir diréctamente el script haciendo click en el archivo?,
Lo comento porque el script debe recibir un argumento espeficando una ruta, como en todos los códigos que has mostrado hasta ahora...


Cita de: Pédrin-2 en 20 Septiembre 2013, 16:56 PMlo que ve es que en el codigo que has puesto el Setlocal lo tienes del mismo color que ejem, Echo sin en cambio en mi notepad ++ no sale de color azul, sale negro.

sabes que puede pasar ??

-.-

Ains, no te preocupes por eso... el término es "Syntax Highlighting", tanto este foro SMF como esos editores de texto usan plugins para resaltar la sintaxis de los lenguajes de programación,
ves del mismo color "Echo" y "SetLocal" porque son dos Keywords así que se resaltan en el mismo color, si tu editor de texto no resalta "SetLocal" entonces el plugin que usan para Batch es una basura, aunque el plugin GeShi de este foro tiene otros errores mucho más graves que ya comenté en otro post pero nadie me hizo ni caso.

PD: Te recomiendo Sublime Text 3.0 + Plugins de terceros.

Saludos








Pédrin-2

Cita de: EleKtro H@cker en 20 Septiembre 2013, 17:40 PM

EDITO:
Dime una cosa... ¿No será que tu estás intentando abrir diréctamente el script haciendo click en el archivo?,
Lo comento porque el script debe recibir un argumento espeficando una ruta, como en todos los códigos que has mostrado hasta ahora...

-.-

Saludos

Pues si es lo que hago click en el archivo como siempre
:rolleyes:   entonces como lo hago???
Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo