Estoy teniendo problemas a la hora de crear un .bat que copie archivos de un directorio a otro y luego los descomprima. Los parámetros que tiene que recibir POR LÍNEA DE COMANDOS son: Parámetros: - Directorio origen - Directorio destino - Nombre del .zip He utilizado el comando compact pero no lo hace. Tampoco sé cómo concatenar los parámetros para coger el nombre del .zip y el directorio destino para que los descomprima. Sé que se haría de una forma parecida a esto:
Copy %1 %2 compact /u %2%3 Obviamente esto no está concatenando los parámetros. Tampoco me funciona el comando compact.
1 Respuesta
Respuesta de gggirald
1
1
gggirald, Experiencia en manejo de bases de datos Oracle, programación en...
Antes de nada creo que habría que aclarar algo respecto al tipo de compresión que creo que utiliza el comando COMPACT y su relación con el sw normal de compresión de archivos en windows (por ejemplo la compresión que aplican el winzip o el winrar). Empezaré diciendo que nunca he usado el comando COMPACT, por lo que puede ocurrir que no lo haya entendido bien, pero voy a explicar lo que creo que he entendido. COMPACT permite que un archivo o un directorio se compriman en cuanto a su forma de almacenarlos en el disco, es decir, que no comprime la información de los archivos o carpetas sino que utiliza una forma comprimida de almacenarla. Por eso exige que el disco donde se almacenan esté formateado de una forma específica (concretamente en NTFS). Una vez que se elige que un archivo es de tipo comprimido (se marca con una "C" en los atributos que señala el comando COMPACT) lo seguirá siendo hasta que se le cambie su carácter. De modo que si editas y modificas un archivo comprimido al guardarlo se guarda como archivo comprimido. Si comprimes un directorio, todo lo que se guarde en él se guardará en forma comprimida. No sé en que consiste la compresión que hace el comando COMPACT pero no es como la de Winzip o la de Winrar. Estos programas compresores comprimen la información utilizando combinaciones de algoritmos de encriptado y otros que permiten detectar repeticiones y sustituirlas por algo como la cuenta de repetición y el texto repetido (algo como sí en lugar de "abcabcabcabcabc" guardaras "5abc"). Pero los archivos comprimidos de esta manera son archivos "normales" para el sistema operativo. De hecho se puede ver la información comprimida (que no se parece en nada a la original y resulta ilegible). Dicho lo anterior debería quedar claro que si copias archivos de un directorio comprimido con COMPACT a un directorio normal los archivos en el directorio normal estarán descomprimidos. Si copias un archivo comprimido en otro archivo, la copia estará descomprimida. Si sobreescribes un archivo comprimido con el contenido de otro archivo, el archivo comprimido seguirá estando comprimido pero con la información cambiada. De alguna manera al escribir sobre un archivo comprimido se comprime y al leerlo se descomprime, sin que podamos ver el resultado. El explorador de Windows sabe si un archivo o un directorio están comprimidos y los muestra en azul. Como creo que lo anterior puede cambiar totalmente tu idea de lo que quieres hacer esperaré a que me contestes para ver si puedo seguir intentando ayudarte. Saludos, GGG
He intuido que el comando compact no funcionaba. Lo que me gustaría saber es cómo hacer el .bat, con el comando para descomprimir que sea. No sé cómo usar los parámetros ni si puedo invocar a winrar por línea de comandos dentro del propio .bat Muchas gracias por contestarme!
Sí. Se puede usar el línea de comandos, pero se le invoca como RAR y no como Winrar. Puedes ver información, en inglés, eso sí, en http://www.rarreg.com/users_manual.php Si no te apañas con el inglés o si te da algún problema el BAT puedes seguir preguntando. Pero no es que el comando COMPACT no funcione, es que no hace lo que esperabas de él (ni yo tampoco lo hubiera esperado). Saludos, GGG
Creo que ya más o menos lo tengo. Sí, había visto el rar.exe, aunque el winrar.exe por línea de comandos también me ha permitido descomprimir .zip. Muchas gracias por la atención que me has prestado! Un saludo.