Mover archivos / carpetas ocultos con la línea de comandos o el archivo por lotes

15

Pregunta

¿Alguien sabe de una manera de mover archivos y carpetas que tengan el atributo oculto, del sistema o de solo lectura establecido desde la línea de comandos o un archivo por lotes? (No, quitar los atributos primero no es una opción, ya que no hay una forma práctica de saber qué atributos se configuraron para volver a configurarlos después del movimiento).


(Intentos fallidos

  1. El uso del movecomando básico no funciona con elementos con el conjunto de atributos ocultos o del sistema y, por alguna razón, no tiene interruptores para especificar atributos como los comandos diry del.

  2. Intenté usar una utilidad que escribí que usa la función de operación de archivos del shell, pero que requiere usar start /wpara evitar que el archivo por lotes se ejecute antes, y se queja del soporte de nombres largos de archivos por alguna razón.

  3. Intenté usarlo robocopy, pero primero copia los archivos y luego elimina los originales en lugar de simplemente mover la fuente (lo que resulta en un retraso frustrante, incluso con la salida excesiva redirigida a nul).

(Sorprendentemente, parece que pocas personas han necesitado mover archivos ocultos desde la línea de comandos. Todo lo que pude encontrar fue esta persona que abandonó el intento).

Synetech
fuente
44
Si está creando el \tempdirectorio, ¿por qué no simplemente renombrar / mover el %1directorio \temp? ¿O es solo el caso simplificado?
Ken
Ese es de hecho un caso simplificado. Simplemente renombrar no funcionaría.
Synetech
¿Por qué quitar un atributo no es una opción? Esa sería la forma adecuada (y prevista) de hacerlo.
Torre
> ¿Por qué quitar un atributo no es una opción? @Idigas, ¿cómo sabría exactamente qué atributos se configuraron en cada elemento para que se puedan volver a configurar correctamente? > Esa sería la forma correcta (y prevista) de hacerlo. Eso no suena bien, en absoluto.
Synetech
Perdona mi ignorancia, pero ¿funcionaría algo como jamesewelch.com/2008/05/01/… ?
Dr Kitty

Respuestas:

6

He podido mover con éxito archivos ocultos de solo lectura usando MV.EXE desde GNU para las utilidades Win32. El archivo de destino conserva los atributos ocultos de solo lectura.

Tendrás que descargar el paquete completo:

http://gnuwin32.sourceforge.net/downlinks/coreutils-bin-zip.php

RobW
fuente
1
No está mal. Eso funciona, desafortunadamente muere cuando se trata de archivos que comienzan con --; piensa que es un argumento en lugar de un nombre de archivo.
Synetech
2
¿No está mal? ¿Eso es? Resuelve tu solicitud. No veo nada sobre el requisito '--filename', o lo habría probado. Disculpas, pero los requisitos ocultos son deporte pobre.
RobW
Si, no está mal. Lo hace solamente el funcionamiento básico Pregunté por. Si no puede manejar nombres de archivo de Windows válidos, entonces no es muy útil, ¿verdad? Manejar nombres de archivos correctamente no es un requisito "oculto".
Synetech
3
@Synetech, solo tiene que calificar el nombre del archivo:mv .\--1.txt newdirectory
dangph
44
Las utilidades de Unix en general se usan --foopara denotar argumentos de línea de comandos. Para admitir los nombres de archivo que comienzan con --, la mayoría de ellos aceptan un argumento especial --para indicar el final de los argumentos de la línea de comandos y el comienzo de los nombres de archivo. No estoy seguro de si mves uno de estos comandos, pero si lo es, entonces debería ser capaz de:mv -- --weirdFileName.gotcha betterFileName.txt
Ben
5

Acabo de lograr esto usando:

xcopy /H hidden_file destination_file
del /AH hidden_file
Ben
fuente
1
La pregunta pregunta cómo mover archivos. El OP sabe cómo copiar y eliminar, y no quiere hacer eso. Además, dice que ya sabe cómo eliminar archivos ocultos.
Scott
2
Scott tiene razón; Si los volúmenes de origen y de destino son iguales, lo último que desea hacer es "mover" un archivo copiándolo primero. En el mejor de los casos, no tiene sentido con un solo archivo pequeño, pero con un archivo grande o muchos archivos pequeños (y mucho menos muchos archivos grandes), es horrible (alta carga de CPU y disco). Esto empeora aún más si está moviendo un árbol de directorios completo. El sistema de archivos ya admite un movimiento rápido y fácil al cambiar los punteros de entrada de directorio; El problema es con la interfaz del sistema operativo que impide hacerlo con archivos ocultos.
Synetech
Justo, no es un movimiento real. Y para grandes movimientos puede dar muchos gastos generales. Pero el OP nunca dijo que copiar + eliminar era necesariamente algo malo, y de todos modos, este es uno de los principales éxitos en las búsquedas web sobre cómo mover un archivo oculto desde la línea de comando, y funcionó para lo que tenía que hacer. . Me imagino que las personas que solo buscan cómo mover algunos archivos ocultos también podrían usarlo en lugar de instalar herramientas GNU o PowerShell. Muy molesto que el comando "mover" simplemente no puede hacer esto.
Ben
1
A partir de la pregunta: “ (no) Los intentos ... 3. He intentado utilizar robocopy, pero las primeras copias de los archivos y luego borra los originales en lugar de simplemente moviendo la fuente (que da lugar a un retraso frustrante, ...).”
de Scott
Bastante justo ... Supongo que lo leí como "No quiero usar robocopy" en lugar de "No quiero una operación de copiar + borrar". Pero entiendo tu punto.
Ben
3

Powershell v2:

move-item -force   '--1.txt' newdirectory

también mueve archivos ocultos con conjunto de atributos ocultos y del sistema. Trabajará con archivos que comienzan con '-'.

RobW
fuente
1
Estoy seguro de que funcionaría, pero PowerShell es insoportablemente lento en comparación con el símbolo del sistema normal. Y no, ese no es un requisito "oculto", indiqué claramente mi disgusto por el retraso de Robocopy en la pregunta. (Por favor, no me diga que funciona rápido en su sistema porque eso no me ayuda de ninguna manera. En mi sistema, toma unos segundos simplemente cargar, e incluso presionar Tabpara completar un nombre de archivo toma> 1 segundo, lo cual es orden de magnitud más lenta que en cmd. Así que, a menos que estés dispuesto a comprarme un nuevo sistema, PS no va a ayudar.)
Synetech
Solución PowerShell aún más fácil:mv .oldfile .newfile
Jay Sullivan
0

¿Qué tal esto?

C:\Temp>attrib hidden.txt
A   H        C:\temp\hidden.txt

C:\Temp>mklink /H renamed.txt hidden.txt
Hardlink created for renamed.txt <<===>> hidden.txt

C:\Temp>del /AH hidden.txt

C:\Temp>attrib renamed.txt
A   H        C:\temp\renamed.txt
Ben
fuente
Obviamente, esto solo funciona dentro de las restricciones de dónde se permiten los enlaces duros. Creo que esto significa que el destino del archivo debe estar en la misma partición del mismo disco físico. Pero si no se cumple esta restricción, estoy bastante seguro de que se requeriría una copia + eliminar de todos modos, bajo el capó.
Ben
Idea interesante. Por supuesto, es demasiado limitado (solo uso NTFS para la unidad del sistema de Windows 7 y FAT32 para todo lo demás. Además, generalmente uso Windows XP). También parece funcionar de manera inconsistente con diferentes combinaciones de atributos. Por ejemplo, si configura el atributo de solo lectura, no le permitirá eliminar el archivo "nuevo" la primera vez que intente eliminarlo, en su lugar, eliminará el atributo. ಠ_ ఠ Y, por supuesto, no funciona para carpetas.
Synetech
0

Hemos tenido PowerShell y el mvcomando. Para completar, por lo tanto, he aquí cómo hacerlo con TCC / LE de JP Software , cuyos comandos movey renambos tienen una /a:opción que es común a muchos de sus comandos que escanean directorios para buscar archivos para operar:

[C: \ Users \ JdeBP] touch / c --wibble--
11/03/2014 20: 29: 18.868 C: \ Users \ JdeBP \ - wibble--

[C: \ Users \ JdeBP] attrib + h + s. \ - wibble--
___A___________ -> _HSA___________ C: \ Users \ JdeBP \ - wibble--

[C: \ Users \ JdeBP] mover / a: hs --wibble-- --wobble--
C: \ Users \ JdeBP \ - wibble-- -> C: \ Users \ JdeBP \ - wobble--
     1 archivo movido

[C: \ Users \ JdeBP] ren / a: hs --wobble-- --wurble--
C: \ Users \ JdeBP \ - wobble-- -> C: \ Users \ JdeBP \ - wurble--
     1 archivo renombrado

C: \ Users \ JdeBP] dir / a: hs / t / m / k --wurble--
11/03/2014 20:29 0 _HSA___________ --wurble--

[C: \ Usuarios \ JdeBP]

Otras lecturas

  • JP Software. MOVER . Tome Command / TCC Help.
  • JP Software. REN . Tome Command / TCC Help.
JdeBP
fuente
Por mi parte, no estoy dispuesto a comprar un software comercial para hacer lo que debería ser posible con un pequeño programa gratuito (y es muy probable que tenga que escribirlo como de costumbre). De todos modos, codificó los atributos, lo que no es bueno porque no puede predecir qué atributos puede tener una carpeta. Además, al tocarlo, perdió su marca de tiempo original.
Synetech