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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Personalizar Batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Personalizar Batch  (Leído 16,327 veces)
Pédrin-2

Desconectado Desconectado

Mensajes: 171



Ver Perfil
Personalizar Batch
« en: 16 Septiembre 2013, 19:02 pm »

Hola de nuevo.
Desde hace mucho tiempo un buen conocedor del tema me hizo un batch, creo que era Martin MVP.
Me ha funcionado ciento por ciento.
y ahora me gustaria tunearlo, de momento, el cambio que he hecho, es que le pueda agregar ademas de la fecha ,el nombre que quiera, y tambien que esa misma carpeta se abra.
Pues el tema es que la carpeta se crea y cuando quiere se abre y cuando quiere no se abre, "muy contento estaba yo al ver que funcionaba".
Porfi me echais un cable donde me atasque,

El codigo:
Código:
@echo off
set/p nombre="Nombre:"
set nombre=%nombre%
set guion=-
for /f "tokens=1,2,3,4 delims=/" %%i in ('date /t') do (
set ano=%%k
set dia=%%i
set mes=%%j
set nombre=%nombre%)
set cadena=%ano%%guion%%mes%%guion%%dia% %nombre%
set directorio=%1


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

START EXPLORER %cadena%


En línea

Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Personalizar Batch
« Respuesta #1 en: 16 Septiembre 2013, 20:05 pm »

No me ha quedado muy claro si quieres pasarle el nombre del directorio usando argumentos (%1) o preguntando al usuario, en total intentas setear 3 variables, nombre, directorio, y cadena, si no nos cuentas lo que debe haber en cad auna de ellas...
Por lo que yo entiendo quieres pasarle un directorio por argumentos, y leugo especificar un nomrbe de carpeta manuálmente para ese directorio.

...Símplemente te sugiero como corregir tu script, lo de las variables ya lo ajustas tu:

Código
  1. @echo off
  2.  
  3. :: Aquí las comillas dobles siempre encerrando tanto el nombre de la variable como el valor,
  4. :: nunca encierres el valor con comillas, nunca.
  5. Set /P "nombre=Nombre:"
  6.  
  7. :: 1. Esto sobra complétamente, arriba ya declaras una variable que se llama "nombre" y que contiene el valor que quieres
  8. :: 2.Además aquí te faltó usar comillas dobles para evitar errores si el valor contuviese espacios.
  9. REM set Nombre=%nombre%
  10.  
  11. :: Esto diréctamente en mi opinión sobra,
  12. :: no cuesta nada escribir el símbolo del guión.
  13. :: Esta variable consigue que el código de abajo sea menos legible.
  14. REM set guion=-
  15.  
  16. :: Esta parte se puede simplificar sin la necesidad de establecer nuevas variables
  17. REM for /f "tokens=1,2,3,4 delims=/" %%i in ('date /t') do (
  18. REM set ano=%%k
  19. REM set dia=%%i
  20. REM set mes=%%j
  21. REM set nombre=%nombre%)
  22. :: Pero si prefieres almacenar los valores en nuevas variables puedes hacerlo así
  23. Set "YYYY=%DATE:~6,4%" & Set "DD=%DATE:~0,2%" & Set "MM=%DATE:~3,2%"
  24.  
  25. :: Aquí te faltó usar comillas dobles para encerrar el valor.
  26. set "cadena=%YYYY%-%MM%-%DD% %nombre%"
  27.  
  28. :: El parámetro especial %1 contiene comillas dobles al principio y al final,
  29. :: así que estás encerrando el valor como comenté que no habia que hacerlo nunca.
  30. set "Directorio=%~1"
  31.  
  32. :: 1. Le falta comillas dobles al argumento de la variable "%Directorio%""
  33. :: 2. La variable %cadena% tiene demasiadas comillas dobles que entran en conflicto con el argumento encerrado de la CMD.
  34. REM start cmd.exe /c "CD %directorio% && Md """%cadena%""""
  35.  
  36. :: Crea la carpeta diréctamente sin acceder al directorio.
  37. MKDir "%directorio%\%cadena%"
  38.  
  39. Explorer /select,"%directorio%\%cadena%"
  40. :: NOTA: Fíjate en la barra invertida entre las dos variables,
  41. ::       asgúrate de setear el valor de la variable %directorio% sin esa barra al final del nombre.
  42.  
  43. :: Saludos :)
  44. Pause&Exit



EDITO:

La versión corta:

Código
  1. @echo off
  2.  
  3. Set /P "nombre=Nombre:"
  4. Set "YYYY=%DATE:~6,4%" & Set "DD=%DATE:~0,2%" & Set "MM=%DATE:~3,2%"
  5. set "cadena=%YYYY%-%MM%-%DD% %nombre%"
  6. set "Directorio=%~1"
  7.  
  8. MKDir "%directorio%\%cadena%"
  9. Explorer /select,"%directorio%\%cadena%"
  10.  
  11. Pause&Exit

Saludos


« Última modificación: 16 Septiembre 2013, 20:23 pm por EleKtro H@cker » En línea

Pédrin-2

Desconectado Desconectado

Mensajes: 171



Ver Perfil
Re: Personalizar Batch
« Respuesta #2 en: 16 Septiembre 2013, 20:27 pm »

Jo perdona mucho corria sin dar explicaciones.
El batch tiene que crear una carpeta, con la fecha en la que es creada, pero ademas se tiene que poner otro nombre, ejemplo:  2013 -09-16 Pablo

y por ultimo la carpeta recien creada se tiene que abrir {en el mismo sitio donde esta el batch, (o que yo le indique la ruta donde quiro que se abra) }


Un saludo y Gracias
« Última modificación: 16 Septiembre 2013, 20:29 pm por Pédrin-2 » En línea

Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo
Pédrin-2

Desconectado Desconectado

Mensajes: 171



Ver Perfil
Re: Personalizar Batch
« Respuesta #3 en: 16 Septiembre 2013, 22:46 pm »

Hola  EleKtro H@cker, por mas vueltas que le doy no consigo nada con tu codigo.
El codigo original antes de yo transformalo era asi:

Código:
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 yo lo dejo como ya puse antes:

Código:
@echo off
set/p nombre="Nombre:"
set nombre=%nombre%
set guion=-
for /f "tokens=1,2,3,4 delims=/" %%i in ('date /t') do (
set ano=%%k
set dia=%%i
set mes=%%j
set nombre=%nombre%)
set cadena=%ano%%guion%%mes%%guion%%dia% %nombre%
set directorio=%1


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

START EXPLORER %cadena%

y el unico problema que hay, " por el tema de codigo ignoro que este bien, pero funciona"     es que unas veces abre la carpeta y la mayoria de las veces abre la carpeta de mis documentos.
En línea

Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Personalizar Batch
« Respuesta #4 en: 17 Septiembre 2013, 05:08 am »

@Pedrín-2

Porfavor vuelve a leer los comentarios que te dejé escritos en el script,
Te comenté cual es el problema exacto aquí:

Código:
START EXPLORER %cadena%

La variable, es decir, el argumento de la ruta de acceso, debes encerrarlo usando comillas dobles:

Código
  1. Explorer.exe /select,"%cadena%"





Supongamos que el valor de la variable cadena es este:
Código
  1. Set "Cadena=C:\Carpeta con espacios"

Entonces si tu haces esto:
Código
  1. Explorer.exe %Cadena%
(Que es lo mismo que hacer esto:)
Código
  1. Explorer.exe C:\Carpeta con espacios

Estás pasándole 3 argumentos al proceso:
Código:
1. C:\Carpeta
2. con
3. espacios

Como el explorer.exe no puede encontrar el directorio especificado (Primer argumento: "C:\Carpeta") entonces por defecto te redirige a la localización de "mis documentos".

Pero si tu haces esto otro:
Código
  1. Explorer.exe "%cadena%"
(Que es lo mismo que hacer esto:)
Código
  1. Explorer.exe "C:\Carpeta con espacios"

Ahora le estás pasando un único argumento y te va a abrir la localizión del directorio especificado (siempre que el directorio exista):
Código:
C:\Carpeta con espacios



NOTA: Lo de las comillas dobles debes aplicarlo a "TODO".



un saludo
« Última modificación: 17 Septiembre 2013, 05:11 am por EleKtro H@cker » En línea

Pédrin-2

Desconectado Desconectado

Mensajes: 171



Ver Perfil
Re: Personalizar Batch
« Respuesta #5 en: 17 Septiembre 2013, 11:50 am »

Un millon de gracias EleKtro H@cker.
De momento va bien, y digo de momento porque no se que carajo pasa que a veces falla.
Siguo investigando para poder mejorarlo, pronto me tienes con mas dudas.

Un saludo    ;-)
En línea

Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo
Pédrin-2

Desconectado Desconectado

Mensajes: 171



Ver Perfil
Re: Personalizar Batch
« Respuesta #6 en: 17 Septiembre 2013, 22:32 pm »

Hola EleKtro H@cker
Porque me esta dando errores el Batch.
A veces, cuando pongo el nombre, por ejemplo Juan, me abre la carpeta de mis documentos, la cierro y ejecuto de nuevo, poniendo el mismo nombre y es a la segunda cuando funciona.

Al batch se puede añadir:
1º  si hay otra carpeta con el mismo nombre que se le vaya sumando por ejemplo: 2013 -08-12 Juan-1, 2013 -08-12 Juan-2, 2013 -08-12 Juan-3 etc, se que en action script se puede hacer, aqui ya me pierdo, no se como adaptarlo.

2º que todas las palabras comiencen por mayusculas: 2013 -08-12 Juan Manuel. se que en excel se hace

Demasiado estoy pidiendo, pero para hacerlo yo, me esta costando un mundo, estoy dando palos de ciego.

Disculpa por el morro
Un saludo
En línea

Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Personalizar Batch
« Respuesta #7 en: 17 Septiembre 2013, 23:52 pm »

A veces, cuando pongo el nombre, por ejemplo Juan, me abre la carpeta de mis documentos, la cierro y ejecuto de nuevo, poniendo el mismo nombre y es a la segunda cuando funciona.

Si eso es así entonces puede que estés creando la carpeta después de llamar al explorer y no antes?

Lo de incrementar el sufijo del nombre de la carpeta, sólamente tienes que hacer un substring, es muy sencillo: http://ss64.com/nt/syntax-substring.html

hoy no tengo mas tiempo, si no se me adelanta algún compañero mañana te muestro lo de poner las letras en WordCase, que eso requiere un poco más de elaboración.

Saludos
En línea

Pédrin-2

Desconectado Desconectado

Mensajes: 171



Ver Perfil
Re: Personalizar Batch
« Respuesta #8 en: 18 Septiembre 2013, 00:21 am »


Si eso es así entonces puede que estés creando la carpeta después de llamar al explorer y no antes?


Plis y como se hace


Lo de incrementar el sufijo del nombre de la carpeta, sólamente tienes que hacer un substring, es muy sencillo: http://ss64.com/nt/syntax-substring.html


Bien, eso es lo que andaba buscando, pasos a seguir para ir practicando, no ir dando palos de ciego.

Habia yo, pensado que  tendria que haber algun un programa para traducir la sentencia , estilo google translate, ejem:

elige lenguaje: Visual basic, java, batch, etc...
escribe lo que quieres: como poner todas las palabras en minuscula en las columnas 19 y 20.
.......pensando
Respuesta a lenguaje Visual basic:  If Target.Column = 19 Or Target.Column = 20 Then Target = LCase(Target)

Je, Je, y de paso que nos diga los numeros de la loteria.

Un saludo y Buenas Noches si estas en Spain
« Última modificación: 18 Septiembre 2013, 00:22 am por Pédrin-2 » En línea

Pido disculpas por las pifias que pueda decir. el unico fin es ayudar y aprender.
        Un Saludo
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Personalizar Batch
« Respuesta #9 en: 18 Septiembre 2013, 12:39 pm »

Código
  1. @Echo OFF
  2. Setlocal EnableDelayedExpansion
  3.  
  4. Call :ToWordCase "hello world"
  5.  
  6. Pause&Exit
  7.  
  8. :ToWordCase
  9. Set "Alphabet=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  10.  
  11. For %%# in (%~1) do (
  12. Set "Word=%%#"
  13. Set "Char=!Word:~0,1!"
  14. If "!Char!" EQU "a" (Set "X=%Alphabet:~0,1%")
  15. If "!Char!" EQU "b" (Set "X=%Alphabet:~1,1%")
  16. If "!Char!" EQU "c" (Set "X=%Alphabet:~2,1%")
  17. If "!Char!" EQU "d" (Set "X=%Alphabet:~3,1%")
  18. If "!Char!" EQU "e" (Set "X=%Alphabet:~4,1%")
  19. If "!Char!" EQU "f" (Set "X=%Alphabet:~5,1%")
  20. If "!Char!" EQU "g" (Set "X=%Alphabet:~6,1%")
  21. If "!Char!" EQU "h" (Set "X=%Alphabet:~7,1%")
  22. If "!Char!" EQU "i" (Set "X=%Alphabet:~8,1%")
  23. If "!Char!" EQU "j" (Set "X=%Alphabet:~9,1%")
  24. If "!Char!" EQU "k" (Set "X=%Alphabet:~10,1%")
  25. If "!Char!" EQU "l" (Set "X=%Alphabet:~11,1%")
  26. If "!Char!" EQU "m" (Set "X=%Alphabet:~12,1%")
  27. If "!Char!" EQU "n" (Set "X=%Alphabet:~13,1%")
  28. If "!Char!" EQU "o" (Set "X=%Alphabet:~14,1%")
  29. If "!Char!" EQU "p" (Set "X=%Alphabet:~15,1%")
  30. If "!Char!" EQU "q" (Set "X=%Alphabet:~16,1%")
  31. If "!Char!" EQU "r" (Set "X=%Alphabet:~17,1%")
  32. If "!Char!" EQU "s" (Set "X=%Alphabet:~18,1%")
  33. If "!Char!" EQU "t" (Set "X=%Alphabet:~19,1%")
  34. If "!Char!" EQU "u" (Set "X=%Alphabet:~20,1%")
  35. If "!Char!" EQU "v" (Set "X=%Alphabet:~21,1%")
  36. If "!Char!" EQU "w" (Set "X=%Alphabet:~22,1%")
  37. If "!Char!" EQU "x" (Set "X=%Alphabet:~23,1%")
  38. If "!Char!" EQU "y" (Set "X=%Alphabet:~24,1%")
  39. If "!Char!" EQU "z" (Set "X=%Alphabet:~25,1%")
  40. < Nul Call Set /P "=!X!!Word:~1! "
  41. )
  42.  
  43. GOTO:EOF

Así lo hice en Batch,
saludos!
En línea

Páginas: [1] 2 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Personalizar aplicacion
Programación Visual Basic
bautistasbr 3 1,340 Último mensaje 30 Agosto 2006, 21:38 pm
por NYlOn
Personalizar error
Programación Visual Basic
dimitrix 1 1,332 Último mensaje 22 Enero 2007, 01:18 am
por Syphroot
personalizar datagrid vb6.0
Programación Visual Basic
choquito 2 6,857 Último mensaje 2 Abril 2007, 17:41 pm
por choquito
Personalizar DVD
Multimedia
Sri 0 1,872 Último mensaje 23 Diciembre 2007, 19:19 pm
por Sri
[Batch] Insertar un batch dentro de un batch que fabrique un .txt
Scripting
$pedrojo2704 2 5,466 Último mensaje 23 Agosto 2012, 10:08 am
por $pedrojo2704
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines