Personalizar Batch

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

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

Eleкtro

Vamos a ver, Pedrín-2, me pediste que no me enfade pero es que hay algo que me lleva sacando de quizio en este tema...

¿Esta orden entiendes para que sirve?:
Citarset directorio=%1

Si no lo entiendes, ¿Entonces porque la usas en todos los ejemplos que has dado desde un principio?.

Dijiste que alguien te hizo el script, así que yo supuse que esa orden la puso el que te lo codeó, y que la puso con la intención que debe tener, llamar al script desde la consola, pero veo que no es así ni que tampoco tienes intenciones de usarlo así.

En mi último script, reemplaza esta linea:
Citar
Código (dos) [Seleccionar]
Set "DirPath=%*"

Por esta otras:
Código (dos) [Seleccionar]
Set /P "DirPath=Nombre de Carpeta:"

Saludos!








Pédrin-2

Ya estaria si no fuese que la carpeta buena, (la que tiene la fecha y nombre ) se crea dentro de otra.
y te cuento  por encima la historia:
Me dieron este archivo reg:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\Nueva_carpeta]
@="Crear subcarpeta"

[HKEY_CLASSES_ROOT\Folder\shell\Nueva_carpeta\command]
@="\"C:\\BAT\\Carpeta.bat\"\"%1\""



Este bat:

echo off
set guion=-
for /f "tokens=1,2,3 delims=/" %%i in ('date /t') do (
set ano=%%k
set dia=%%i
set mes=%%j)
set cadena=%ano%%guion%%mes%%guion%%dia%
set directorio=%1
start cmd.exe /c "CD %directorio% && Md """%cadena%""""



y esta guia  txt:

Crea en tu disco C una carpeta llamada "BAT" (sin comillas) y aloja allí el fichero Carpeta.bat. Seguidamente haz doble clic sobre Carpeta.reg, pulsa Sí, Aceptar. Verás que a partir de entonces al hacer clic con el botón derecho del ratón sobre cualquier carpeta te aparece una nueva entrada llamada "Crear subcarpeta", que al ser pulsada creará una carpeta dentro de la carpeta seleccionada, y con la fecha actual como nombre ya definido, tal y como pedías.

Espero que te sirva.



Pero ocurrio que descubri, que al hacerle click me la hacia dentro de esa misma carpeta donde estaba el batch.
Entonces puse un acc directo y queria hacer lo mismo, asi al abrirse la carpeta no la tendria que ir buscarla, por eso todo este calvario.

Espero que me hayas entendido

Madre mia cuando abra un hilo preguntando algo no va haber nadie que me conteste   :-[ :-[

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

Eleкtro

#22
Creo que ahora entiendo tus intenciones.

¿Quieres que la carpeta "Cliente" se cree en el mismo directorio desde donde abres el script , no?

Pues deja esta parte del último script así:

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

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

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

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

Pause&Exit


PD: Por si vas a pregunarlo: La carpeta no se puede abrir en la misma instancia del explorer, es necesario abrir un nuevo proceso del explorer xD.

Saludos








Pédrin-2

Je, je, mo me mandes a t.......... 
pero falta un detallin.
Si escribes en minusculas  100  x  100  perfecto
el problemilla viene cuando escribes en mayusculas, no respeta y sale todo en mayusculas.    :silbar:

Gracias por entenderlo

Un saludo

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, 20:52 PMel problemilla viene cuando escribes en mayusculas, no respeta y sale todo en mayusculas.    :silbar:

Cierto, se me habia pasado ese detalle.

Pero es muy facil de solucionar, puedes hacerlo tu mismo, te doy una pista muy grande:

Citar :ToWordCase
...
If "!Char!" EQU "a" (Set "X=%Alphabet:~0,1%")
...

Duplica las variables, pero tienes que poner una cosa en mayúscula...

Saludos








Pédrin-2

Pues no es tan facil como dices he probado de todo, poniendo codigos en todas las lineas, duplicando todo el contenido de la etiqueta :ToWordCase
cambiando mayusculas, minusculas ,numeros etc y sigo peor

Set "Alphabet=ABCDEFGHIJKLMNOPQRSTUVWXYZ"   
por       
abcdefghijklmnopqrstuvwxyz

    If "!Char!" EQU "A" (Set "X=%Alphabet:~0,1%")   solo mayuscula


   If "!Char!" EQU "A" (Set "X=%Alphabet:~26,1%") del 26 en adelente



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

Pédrin-2

Quisiera aprender, pero para llegar al nivel 10 estoy mu verde.
Que barbaridad


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

Eleкtro

#27
Solución:

If /I "!Char!" EQU "a" (Set "X=%Alphabet:~0,1%")
If /I "!Char!" EQU "b" (Set "X=%Alphabet:~1,1%")


El switch "/I" es para no distinguir entre mayusculas o minusculas, así que en verdad no tienes que duplicar las comparaciones.

IF /?


De la forma en la que tú lo estás intentando hacer, lo que debiste hacer es esto:

If "!Char!" EQU "a" (Set "X=%Alphabet:~0,1%")
If "!Char!" EQU "A" (Set "X=%Alphabet:~0,1%")

If "!Char!" EQU "b" (Set "X=%Alphabet:~1,1%")
If "!Char!" EQU "B" (Set "X=%Alphabet:~1,1%")

etc...


Agregar la comparación del caracter en UPPERCASE, no modifiques el índice del substring (ah no ser que le hayas añadido más caracteres a la variable del alfabeto, claro...)

Hazlo de la manera que prefieras, odo lo demás lo dejas igual como estaba xd

Saludos!








Pédrin-2

sigo igual, le he puesto el switch y sigue igual te subo el code

No era como tu dices
tal como tenia el codigo copie todas las variables y las pege  acontinuacion no las intercale 1º con las letras en mayusculas, 2º caumentando la numeracion desde el 26

@Echo OFF & Setlocal EnableDelayedExpansion

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

Set "FullPath=%CD%\%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 /I "!Char!" EQU "a" (Set "X=%Alphabet:~0,1%")
If /I "!Char!" EQU "b" (Set "X=%Alphabet:~1,1%")
If /I "!Char!" EQU "c" (Set "X=%Alphabet:~2,1%")
If /I "!Char!" EQU "d" (Set "X=%Alphabet:~3,1%")
If /I "!Char!" EQU "e" (Set "X=%Alphabet:~4,1%")
If /I "!Char!" EQU "f" (Set "X=%Alphabet:~5,1%")
If /I "!Char!" EQU "g" (Set "X=%Alphabet:~6,1%")
If /I "!Char!" EQU "h" (Set "X=%Alphabet:~7,1%")
If /I "!Char!" EQU "i" (Set "X=%Alphabet:~8,1%")
If /I "!Char!" EQU "j" (Set "X=%Alphabet:~9,1%")
If /I "!Char!" EQU "k" (Set "X=%Alphabet:~10,1%")
If /I "!Char!" EQU "l" (Set "X=%Alphabet:~11,1%")
If /I "!Char!" EQU "m" (Set "X=%Alphabet:~12,1%")
If /I "!Char!" EQU "n" (Set "X=%Alphabet:~13,1%")
If /I "!Char!" EQU "o" (Set "X=%Alphabet:~14,1%")
If /I "!Char!" EQU "p" (Set "X=%Alphabet:~15,1%")
If /I "!Char!" EQU "q" (Set "X=%Alphabet:~16,1%")
If /I "!Char!" EQU "r" (Set "X=%Alphabet:~17,1%")
If /I "!Char!" EQU "s" (Set "X=%Alphabet:~18,1%")
If /I "!Char!" EQU "t" (Set "X=%Alphabet:~19,1%")
If /I "!Char!" EQU "u" (Set "X=%Alphabet:~20,1%")
If /I "!Char!" EQU "v" (Set "X=%Alphabet:~21,1%")
If /I "!Char!" EQU "w" (Set "X=%Alphabet:~22,1%")
If /I "!Char!" EQU "x" (Set "X=%Alphabet:~23,1%")
If /I "!Char!" EQU "y" (Set "X=%Alphabet:~24,1%")
    If /I "!Char!" EQU "z" (Set "X=%Alphabet:~25,1%")
Set "WordCaseName=!WordCaseName! !X!!Word:~1!"
)


CitarCódigo:
IF /?

esto no lo entiendo
Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo

Pédrin-2

Por favor EleKtro H@cker, no me dejes asi,    :-\

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