lunes, 28 de marzo de 2011

Touch en Windows - Tocar fechas de ficheros

Aquí van tres trucos rápidos, todos Windows/Office. Primero: necesito que los documentos de una carpeta tengan todos la fecha más actual (vaya, el touch de UNIX). Concretamente tenía que "tocar" (touch) las fechas de unos libros (extensión mobi) para que el Kindle me los mostrase arriba en la lista de recientes ;-)

Al final me ha servido

type nul >>*.mobi & copy *.mobi +,,

Visto en StackOverflow. Mucho ojo con algunas alternativas que proponen ya que pueden resultar destructivas, es muy fácil cambiar mínimamente la orden y borrar el contenido de los ficheros al tocarlos. Lo mejor, copiar a una carpeta y trabajar sobre las copias.







¿Sabéis de alguna más fácil de conseguir esto mismo? Como siempre, gracias por venir. Si te gustó el post puedes apuntarte a través del correo electrónico o por medio del feed RSS (más información acerca del RSS). También puedes seguirme a través de mis elementos compartidos de Google Reader y desde Twitter.

3 comentarios:

javcasta dijo...

Un matiz, yo lo haría así:

copy *.mobi +,, > nul

ya que

type nul >> fichero.ext

borra todo el contenido de fichero.ext (lo sobreescribe con la nada, un equivalente es echo nul >> fichero.ext), aunque en la sentencia

type nul >>*.mobi & copy *.mobi +,,

el type nul no afecte ya que se ejecuta 1º el copy .moby ..., pero en la cli se suelen cometer faltas de ortografia o sintaxis y se lia la cosa a veces ... :-)

En realidad con

copy *.mobi +,,

ya tienes el equivalente al touch de unix, ya que se recopian todos los ficheros sobre si mismos adquiriendo la fecha y hora del sistema en el momento de la copia
Lo de > nul o type nul es solo para que no salga el volcado del proceso por consola (estética)

Otra solución:

http://sourceforge.net/projects/touchforwindows/

Salu2

javcasta dijo...

Rectifico:

type nul >> fichero.ext

Añade nul (nada) al fichero.ext, no le borra el contenido (si no existe lo crea vacío). Y por supuesto hace un timestamp del momento (touch)

type nul > fichero.ext

Borra el contenido del fichero.ext (si no existe lo crea vacío)

Para hacer el equivalente del touch, se me ocurre:

for %i in (*.mobi) do (type nul >> %i)

Pero lo he probado y no va, no cambia la fecha

Luego la forma más eficiente sigue siendo

copy *.mobi +,, > nul

¡como se me oxida el scripting si no se practica! :-)

Salu2

Wan Link Sniper dijo...

Si, hay que tener mucho cuidado con esto por que es fácil borrar el contenido de los ficheros. Yo hice varias pruebas y me cargué varios ficheros, lo mejor es trabajar sobre copias, yo copia a una carpeta lo que voy a transferir y "toco" exclusivamente esa carpeta.

En mi caso, como explico en el post, tenía que meterle al Kindle libros nuevos y dado el sistema que tiene (una única vista que sólo se puede ordenar por autor, título o más reciente) tenía que "tocar" los ficheros para que aparecieran "arriba", o se me perdían entre centenares.

Y todo por que no hay un "touch" ;-)