Tengo una carpeta compuesta de archivos :

«1.txt»

«2.txt»

Necesito comprimir en un zip gracias a 7-zip, a través de un archivo de proceso por lotes.
Todo está funcionando bien con este script :

7za a my_zip.rar 1.txt 2.txt 

Puedo obtener un my_zip.rar contiene los dos archivos.

El problema es que necesito el nombre de el archivo zip con la fecha en el momento en que el archivo de proceso por lotes se ejecuta. Así que he probado este script :

set year=%date:~10,4%
set month=%date:~4,2%

7za a %year%_%month%.rar 1.txt 2.txt 

Me estoy haciendo una carpeta llamada «_2», que contiene una «.rar» que contiene mi los 2 archivos.
Me gustaría tener un «2014_12.rar» el archivo que contiene mi los 2 archivos.

EDICIÓN : salida de secuencia de Comandos :

D:\Users>zip.bat
D:\Users>set year=
D:\Users>set month=2/
D:\Users>echo _2/.rar 1.txt 2.txt
 _2/.rar 1.txt 2.txt
D:\Users>7za a _2/.rar 1.txt 2.txt
7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Scanning
Updating archive _2/.rar
Compressing  1.txt
Compressing  2.txt
Everything is Ok

Mi zip.bat usada :

set year=%date:~10,4%
set month=%date:~4,2%
echo %year%_%month%.rar 1.txt 2.txt
7za a %year%_%month%.rar 1.txt 2.txt 

Gracias de antemano por su ayuda

  • funciona muy bien para mí, tal vez intente usar " en el rar de nombre de archivo: "%year%_%month%.rar"
  • (Yo 7z.exe)
  • Ok, porque con este exe (7za), la adición de las comillas dobles no cambia nada. Gracias de todos modos
  • Yo no entendía. ¿todavía tiene el problema?
  • Sí, yo también lo intentó con 7z.exe y el mismo resultado : una carpeta llamada «_2» que contiene «.rar» que contiene mi los 2 archivos. Es como el nombre de mi archivo por lotes no es bien interpretado, pero no entiendo por qué se está trabajando para usted.
  • puedes añadir la línea echo %year%_%month%.rar 1.txt 2.txt y añadir el resultado a la pregunta?
  • Suena como que usted está recibiendo un / en %year% o %month% que se interpreta como un separador de ruta. echo %year%_%month% para ver lo que sus variables son asignadas.
  • año variable está vacía y el mes de la variable es igual a _2/
  • pero no sé cómo conseguir el año y la fecha y, a continuación, quitar la barra diagonal inversa en lote de secuencias de comandos.
  • Tal vez el uso de wmic para obtener la fecha. Win32_Localtime de la configuración regional agnóstico de todos modos. Consulte Método 2 en esta página para una solución. O si usted simplemente desea eliminar una barra de un valor de la variable, ver esta página para las manipulaciones de cadenas en lote de secuencias de comandos. (Sugerencia: %var:/=% va a quitar barras de %var% en el momento de la evaluación). Me disculpo por recoger las liendres, pero / es una barra diagonal, no de una barra invertida. / se inclina hacia adelante. \ se inclina hacia atrás, ver.

InformationsquelleAutor user2443476 | 2014-12-04

2 Comentarios

  1. 0

    Está cortando el año y el mes de las piezas incorrectamente desde su DATE. Como no sé cómo a la fecha tiene el formato de la configuración regional, sólo puedo sugerir que echo %DATE% en la línea de comandos y contar los caracteres correctamente, recordando que usted tiene que comenzar con 0. (si usted tiene dd/mm/aaaa, que sería 6,4 y 3,2)

  2. 0

    Aquí es una acción de script que uso para obtener los valores de fecha. Este es construido con el prefacio que su localización se NOS inglés; puede que necesite modificar si no es su caso.

    @echo off
    
    setlocal EnableDelayedExpansion
    FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
        if "%%B" NEQ "" (
            SET /A FDATE=%%F*10000+%%D*100+%%A
            SET /A FTIME=%%B*10000+%%C*100+%%E
        )
    )
    
    SET DatePartYear=%FDATE:~0,4%
    SET DatePartMonth=%FDATE:~4,2%
    SET DatePartDay=%FDATE:~6,2%
    
    C:
    cd\
    cd "Program Files-Zip"
    7z.exe a D:\%DatePartYear%_%DatePartMonth%.rar D:.txt D:.txt
    pause
    
    • la cosa positiva con wmic es, que el resultado es independiente de la configuración regional. (consulte aquí para un simple wmic consulta para obtener el mismo resultado)
    • Yo no sabía que. Impresionante, gracias!

Dejar respuesta

Please enter your comment!
Please enter your name here