[Solucionado]¿Cómo paso la ruta y nombre de un archivo a un bat sin que se trunque a 8+3 caracteres?

EDIT: Ya he tenido oportunidad de probar otros sistemas (tenía el PC patas arriba) y, nada, era culpa de Windows 2000 :-| Dejo el hilo abierto por si a alguien se le ocurre algo, de todas formas, o que sea aplicable incluso a Windows anteriores.

EDIT2: Solución: resulta que yo estaba llamando al bat como se recomendaba con cmd /c rutaaelbat %1 y al usar bat "%1" funciona. La cosa tiene guasa porque los bat de este tipo los tengo en ruta ejecutable en la variable de sistema PATH y hubiera bastado con llamarlo directamente, pero... es que anoche.... era muy tarde y ya no me daba para más XD e intentaba llamar al bat con la ruta completa... y tampoco. Bueno, y por seguir las recomendaciones :-| El caso es que probando, con la ruta ahora si me va y anoche no :-? Qué estaría haciendo.

Resumen, ahora sí funciona con las comillas: archivo.bat "%1"

Mensaje original:
La respuesta obvia que me daréis sería "con las comillas", pero no. Es que no cabe todo en el asunto y no lo he dicho todo.

El caso es el siguiente.

Me he creado un archivo bat para hacer copias de los archivos que voy editando, para ir manteniendo copias por si tengo que volver atrás. Esto antes lo hacía copiando y pegando, pero es que al final uno se lía con tanto archivo "copia (x) de tal o cual archivo.ext".

Ese bat, para no andar con la interfaz de comandos, lo he añadido al menú contextual, así que copiar archivos se convierte en baladí dejando el archivo como "archivo fecha hora.ext". Mucho más limpio que copia, copia, copia.

Hasta ahí, ningún problema.

El problema viene que al llamar al bat desde el menú contextual, y da igual las comillas que le pongas, siempre envía la ruta y el nombre trucando a 8+3 en notación de DOS. La ruta en realidad, me importa un pimiento, pero el nombre de archivo no (pero como una cosa implica la otra), porque si es más largo de 8+3 o tiene espacios, al truncarlo, la copia ya no tiene el nombre del archivo original. Es decir, si tenemos el archivo "hola que tal.paco", el nombre de archivo se envía como "HOLAQU~1.PAC", y el resultado, al copiarlo el bat, "HOLAQU~1 fecha hora.PAC".

Así que lo que inicialmente era un script ideal para ahorrar tiempo, ahora se ha vuelto un quebradero de cabeza. O usar la interfaz de comandos :/

La llamada en el menú contextual la he metido, a veces por requerimiento con las comillas (leer la ayuda de CMD):
cmd /c "ruta\a\el\bat" %1
cmd /c ruta\a\el\bat "%1"
cmd /c ruta\a\el\bat %1

Y de ninguna manera se envía "entero" el nombre de archivo.

He leído cosas por ahí que si %~1, pero aquí no funciona, tal vez por la versión de Windows :-? y se envía literal como %~1.

¿Alguna idea? O es que directamente es imposible. Yo que me había hecho ilusión en que esto me iba a facilitar la vida..., porque ayer me pegué un buen rato renombrando archivos (con Lupas). No lo voy a tener que hacer otra vez pero... ufff. Aparte que lupas añade la hora en UTC, que no es problema, pero de cara a la hora original de creación del archivo es inexacto.
0 respuestas