Autor
|
Tema: Personalizar Batch (Leído 17,746 veces)
|
Pédrin-2
Desconectado
Mensajes: 171
|
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: @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
Mensajes: 9.878
|
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: :: Aquí las comillas dobles siempre encerrando tanto el nombre de la variable como el valor, :: nunca encierres el valor con comillas, nunca. :: 1. Esto sobra complétamente, arriba ya declaras una variable que se llama "nombre" y que contiene el valor que quieres :: 2.Además aquí te faltó usar comillas dobles para evitar errores si el valor contuviese espacios. REM set Nombre=%nombre% :: Esto diréctamente en mi opinión sobra, :: no cuesta nada escribir el símbolo del guión. :: Esta variable consigue que el código de abajo sea menos legible. REM set guion=- :: Esta parte se puede simplificar sin la necesidad de establecer nuevas variables REM for /f "tokens=1,2,3,4 delims=/" %%i in ('date /t') do ( REM set ano=%%k REM set dia=%%i REM set mes=%%j REM set nombre=%nombre%) :: Pero si prefieres almacenar los valores en nuevas variables puedes hacerlo así Set "YYYY= %DATE:~6,4%" & Set "DD= %DATE:~0,2%" & Set "MM= %DATE:~3,2%" :: Aquí te faltó usar comillas dobles para encerrar el valor. set "cadena= %YYYY%- %MM%- %DD% %nombre%" :: El parámetro especial %1 contiene comillas dobles al principio y al final, :: así que estás encerrando el valor como comenté que no habia que hacerlo nunca. :: 1. Le falta comillas dobles al argumento de la variable "%Directorio%"" :: 2. La variable %cadena% tiene demasiadas comillas dobles que entran en conflicto con el argumento encerrado de la CMD. REM start cmd.exe /c "CD %directorio% && Md """%cadena%"""" :: Crea la carpeta diréctamente sin acceder al directorio. MKDir " %directorio%\ %cadena%" Explorer /select,"%directorio%\%cadena%" :: NOTA: Fíjate en la barra invertida entre las dos variables, :: asgúrate de setear el valor de la variable %directorio% sin esa barra al final del nombre. :: Saludos :)
EDITO:La versión corta: Set "YYYY= %DATE:~6,4%" & Set "DD= %DATE:~0,2%" & Set "MM= %DATE:~3,2%" set "cadena= %YYYY%- %MM%- %DD% %nombre%" MKDir " %directorio%\ %cadena%" Explorer /select,"%directorio%\%cadena%"
Saludos
|
|
« Última modificación: 16 Septiembre 2013, 20:23 pm por EleKtro H@cker »
|
En línea
|
|
|
|
Pédrin-2
Desconectado
Mensajes: 171
|
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
Mensajes: 171
|
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: 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: @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
Mensajes: 9.878
|
@Pedrín-2 Porfavor vuelve a leer los comentarios que te dejé escritos en el script, Te comenté cual es el problema exacto aquí: La variable, es decir, el argumento de la ruta de acceso, debes encerrarlo usando comillas dobles: Explorer.exe /select,"%cadena%"
Supongamos que el valor de la variable cadena es este: Set "Cadena=C:\Carpeta con espacios"
Entonces si tu haces esto: Explorer.exe %Cadena%
(Que es lo mismo que hacer esto:) Explorer.exe C:\Carpeta con espacios
Estás pasándole 3 argumentos al proceso: 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: Explorer.exe "%cadena%"
(Que es lo mismo que hacer esto:) 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): 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
Mensajes: 171
|
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
Mensajes: 171
|
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
Mensajes: 9.878
|
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.htmlhoy 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
Mensajes: 171
|
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 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
Mensajes: 9.878
|
Call : ToWordCase "hello world" :ToWordCase Set "Alphabet=ABCDEFGHIJKLMNOPQRSTUVWXYZ" 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%" ) )
Así lo hice en Batch, saludos!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Personalizar aplicacion
Programación Visual Basic
|
bautistasbr
|
3
|
1,522
|
30 Agosto 2006, 21:38 pm
por NYlOn
|
|
|
Personalizar error
Programación Visual Basic
|
dimitrix
|
1
|
1,547
|
22 Enero 2007, 01:18 am
por Syphroot
|
|
|
personalizar datagrid vb6.0
Programación Visual Basic
|
choquito
|
2
|
7,076
|
2 Abril 2007, 17:41 pm
por choquito
|
|
|
Personalizar DVD
Multimedia
|
Sri
|
0
|
2,057
|
23 Diciembre 2007, 19:19 pm
por Sri
|
|
|
[Batch] Insertar un batch dentro de un batch que fabrique un .txt
Scripting
|
$pedrojo2704
|
2
|
6,318
|
23 Agosto 2012, 10:08 am
por $pedrojo2704
|
|