Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: TheTitan en 25 Agosto 2007, 01:02 am



Título: Tengo Problemas!!
Publicado por: TheTitan en 25 Agosto 2007, 01:02 am
Me estoy creando mi programa bat y resulta que en una de las opciones que coloco me dice que " la ruta es demasiado larga " y averiguo que se acorta colocando asi archivos~1 (abreviado) la ruta... ya ok bien. pero he buscado por medio internet y no sale nada al respecto....porfavor si alguien me puede decir como son las abreviaturas se lo agradeceria mucho!. bueno espero inpaciente su respuesta
de antemano muchas gracias.

PD: alguien sabe como hacer @#%& el IE!!! se me abre derrepente y muestra puras @#$%&...
bueno gracias nuevamente
adios.
TheTitan


Título: Re: Tengo Problemas!!
Publicado por: GroK en 26 Agosto 2007, 04:50 am
Veras:

La abreviatura se usa de forma que las subcarpetas cuyo nombre exceda 8 caracteres queden tal que asi: Archivos de Programa -> ARCHIV~1

Como ves, se cogen los seis primeros caracteres y se le añade '~1'. Una ruta de ejemplo:

Código:
C:\Archivos de Programa\Documents and Settings\Pepe\Blablabla\

Se transformaria en:

Código:
C:\ARCHIV~1\DOCUME~1\PEPE\BLABLA~1\

Espero que te sirva. Y en cuanto a lo del IE, lo mas probable es que sea algun tipo de malware. Pasate por el subforo de Seguridad y leete los post con chincheta. ;)

Saludos


Título: Re: Tengo Problemas!!
Publicado por: TheTitan en 26 Agosto 2007, 21:31 pm
 :o. Genial! ya entendi..  muchas gracias por tu respuesta...^^
PD: seguire tu consejo por lo de malware  :-\
gracias
TheTitan


Título: Re: Tengo Problemas!!
Publicado por: kraszic en 27 Agosto 2007, 15:50 pm
Veras:

La abreviatura se usa de forma que las subcarpetas cuyo nombre exceda 8 caracteres queden tal que asi: Archivos de Programa -> ARCHIV~1

Como ves, se cogen los seis primeros caracteres y se le añade '~1'. Una ruta de ejemplo:

Código:
C:\Archivos de Programa\Documents and Settings\Pepe\Blablabla\

Se transformaria en:

Código:
C:\ARCHIV~1\DOCUME~1\PEPE\BLABLA~1\

Espero que te sirva. Y en cuanto a lo del IE, lo mas probable es que sea algun tipo de malware. Pasate por el subforo de Seguridad y leete los post con chincheta. ;)

Saludos

a mi esto nunca me ha quedado muy claro por las pegas q hay...

Os pongo unos ejemplos a ver si me los podeis resolver...
Código:
C:\Mis documentos\blablablabla.jpg
como se abrevia mis documentos cuando hay espacio y excede de 8 letras??? si se trata de abrir un archivo q excede de 8 letras se pondria a continuacion de ~1 .jpg??? Y q pasaria si en esa subcarpeta hubieran dos archivos q las 6 primeras letras son las mismas???como se diferenciarian??
Y tampoco tengo claro como se abreviaria una subcarpeta con un espacio pero q no excede de las 8 letras.
Código:
C:\el ese

saludos

PD: Las rutas abreviadas siempre se escriben en mayusculas??


Título: Re: Tengo Problemas!!
Publicado por: GroK en 27 Agosto 2007, 20:03 pm
Jaja siempre le quieren buscar los 3 pies al gato xD

Te comento kraszic:

Código:
C:\Mis documentos\blablablabla.jpg
como se abrevia mis documentos cuando hay espacio y excede de 8 letras??? si se trata de abrir un archivo q excede de 8 letras se pondria a continuacion de ~1 .jpg???

Cuando hay espacios en las rutas antes de dichos 6 caracteres los espacios se suprimen. Asi de facil:

Código:
C:\MISDOC~1\BLABLA~1.jpg

Y asi tambien respondo a tu segunda pregunta; a los archivos tambien se le puede aplicar la abreviatura.



Y q pasaria si en esa subcarpeta hubieran dos archivos q las 6 primeras letras son las mismas???como se diferenciarian??

Predecible pregunta :P Igual de predecible es la respuesta:

Suponiendo que en C:\Mis Documentos\ tenemos los archivos blablabla1.jpg, blablabla2.jpg, etc varios asi, pues para referirnos al primero por orden alfabetico haremos:

Código:
C:\MISDOC~1\BLABLA~1.jpg

Para el segundo:

Código:
C:\MISDOC~1\BLABLA~2.jpg

Etcetera...Como ves, ese inexplicable '~1' sin razon de ser aparente tiene mas sentido de lo que parece a simple vista ;)

Sin embargo en este hipotetico caso he estado probando y parece que no soporta mas de 4 archivos cuyos seis primeros caracteres sean iguales, es decir, hasta BLABLA~4, a partir de ahi con los siguientes me daba error y no podia encontrar el archivo. Para eso no he encontrado solucion, pero espero que no tengas que llegar hasta esos extremos :xD Recuerda que el principal uso de la abreviatura esta es para acortar las rutas cuando estamos trabajando en muchas subcarpetas y la ruta total pueda exceder los 260 caracteres limite con los que puede trabajar Windows; casi siempre con aplicar la abreviatura en una o dos subcarpetas sera suficiente para evitar ese obstaculo y, ciertamente, con los archivos rara vez se aplica, asi que podemos nombrarlos con su nombre y apellidos completos y asi no habra problemas.



Y tampoco tengo claro como se abreviaria una subcarpeta con un espacio pero q no excede de las 8 letras.
Código:
C:\el ese

Pues simplemente no se abrevia xD Pones:

Código:
cd C:\el ese

Y te cambia el directorio sin problema. Recuerda que la abreviatura se aplica SOLO si el directorio/fichero tiene MAS de 8 caracteres.

EDITADO:

Si se puede abreviar (Y, de hecho, en la vieja shell de Windows 9x ([Inicio] +R -> 'command.com') hay que hacerlo de esta forma; si no te dira que el comando contiene demasiados parametros). Se hace igual que para las carpetas de mas de 8 caracteres con espacios: Eliminamos los espacios y añadimos '~1', es decir:

Código:
cd C:\ELESE~1



PD: Las rutas abreviadas siempre se escriben en mayusculas??

Da lo mismo, si lo escribes en la consola en minusculas, por ejemplo:

Código:
cd c:\misdoc~1

En la consola te sale:

Código:
C:\MISDOC~1>

Asi que es lo mismo como trabajes, si te es mas comodo con minusculas adelante ;)



Saludos


Título: Re: Tengo Problemas!!
Publicado por: kraszic en 28 Agosto 2007, 09:02 am
jaja, muchas gracias, menudo post tas currado. :o
Ya me ha quedado todo claro!!

saludos


Título: Re: Tengo Problemas!!
Publicado por: Asalta_Hacker en 28 Agosto 2007, 13:44 pm
Hola a to2!!!!!

Escucha hay una forma mas facil de hacer eso solo tienes k poner el destino entre
comillas dobles por ejemplo:

"C:\Archivos de Programa\....\.....bat"

y ya esta la puedes poner on espacios no pasa nada!


salu2


Título: Re: Tengo Problemas!!
Publicado por: GroK en 28 Agosto 2007, 16:31 pm
@Asalta_Hacker

Por supuesto xD pero recuerda lo primero que preguntaron:

Me estoy creando mi programa bat y resulta que en una de las opciones que coloco me dice que " la ruta es demasiado larga "

En fin, lo que TheTitan buscaba era la manera abreviada de escribir las rutas; esta claro que si sabemos que no van a exceder de ese limite se usan las rutas completas entrecomilladas de toda la vida y andando :D

Saludos



Título: Re: Tengo Problemas!!
Publicado por: HeavyBoy en 29 Agosto 2007, 00:05 am
Hola gente! Estaba buscando información sobre algo parecido y me he encontrado con este hilo.
Estoy escribiendo un programa en VB NET y tengo que escribir unas rutas de forma abreviada.
El problema es aparece cuando tienes mas de un archivo con los 6 primeros caracteres iguales:
C:\archivo uno.txt -> abreviado es C:\ARCHIV~1.TXT
C:\archivo dos.txt -> abreviado es C:\ARCHIV~2.TXT

es un coñazo buscar archivos con nombres iguales (Aunque se me ocurre una manera ahora mismo)
Queria saber si alguiente tiene idea de como obtener una ruta abreviada con algun objeto o algo.
Por ejemplo

Dim info As FileInfo = new FileInfo("C:\archivo uno.txt")
Dim ruta_abreviada As String = info.getSortPath (Por llamar de alguna manera a esta función)


Título: Re: Tengo Problemas!!
Publicado por: GroK en 29 Agosto 2007, 01:55 am
@HeavyBoy

Pues si señor :xD La API GetShortPathName viene al pelo para esto. Te pongo un ejemplo sacado de la API-Guide (Ojo, es para VB 6, para .NET no se como ira la cosa pero imagino que sabras adaptarlo)

Código
  1. Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
  2.  
  3. Public Function GetShortPath(strFileName As String) As String
  4.    Dim lngRes As Long, strPath As String
  5.    'Create a buffer
  6.    strPath = String$(165, 0)
  7.    'retrieve the short pathname
  8.    lngRes = GetShortPathName(strFileName, strPath, 164)
  9.    'remove all unnecessary chr$(0)'s
  10.    GetShortPath = Left$(strPath, lngRes)
  11. End Function
  12.  
  13. Private Sub Form_Load()
  14.    MsgBox GetShortPath("c:\Program Files\")
  15. End Sub
  16.  

Como ves, la API GetShortPathName tiene 3 parametros, el primero es la ruta completa de la que deseas obtener la ruta corta; el segundo es el buffer que contendra la ruta corta y el tercero es el tamaño de dicho buffer en caracteres

Espero que te sirva, aunque todo esto se salga un poco del scripting en batch :P Saludos


Título: Re: Tengo Problemas!!
Publicado por: GroK en 29 Agosto 2007, 02:09 am
Por cierto!

Dandole un par de vueltas a lo de kraszic descubri que he metido un poco la gamba aqui xD:

Citar
Citar
Y tampoco tengo claro como se abreviaria una subcarpeta con un espacio pero q no excede de las 8 letras.
Código:
C:\el ese

Pues simplemente no se abrevia xD Pones:

Código:
cd C:\el ese

Y te cambia el directorio sin problema. Recuerda que la abreviatura se aplica SOLO si el directorio/fichero tiene MAS de 8 caracteres.

La verdad es que SI se puede abreviar; es decir, tambien es valido lo que dije pero en la vieja shell de Windows 9x ([Inicio]+R -> 'command.com') el comando cd C:\el ese no seria valido. Para dichas carpetas de menos de 8 caracteres que contienen espacios se actua igual que con las de mas de 8 caracteres; osease, se eliminan los espacios y le largas el consabido '~1' al final. Example:

Código:
cd C:\elese~1

Sorry :P Ahora lo edito arriba. Saludos