1 votos

lote de 7zip crea carpetas en vez de nombre de archivo

Tengo una simple secuencia de comandos por lotes, la cual es manejada por software de copia de seguridad como pre-acción de copia de seguridad. Simplemente busca más reciente de SQL vertederos, los comprime en 10 veces más pequeñas 7zip archivo, entonces la nube de copia de seguridad recoge y envía a la nube de almacenamiento para el archivo.

LOTE crea nombre de archivo con la FECHA en la frente: 07-10-2018-bak.7z

Pero tengo un problema con el archivo por LOTES:

  • cuando lo ejecuto manualmente, se ejecuta muy bien y crea nombre de archivo 07-10-2018-bak.7z siempre carpeta
  • pero cuando lo ejecuto a través de software de copia de seguridad (como usuario del SISTEMA) como pre-acción de copia de seguridad, se crea la SUB-CARPETAS para cada GUIÓN, como este: \07\10\2018-bak.7z

Hice ECHO de cada línea de comandos, y lo hace muy bien. Incluso si se me hizo eco de las líneas manualmente, NO crear carpetas, pero como se debe, el nombre de archivo completo con la fecha incluyen:

"c:\Program Files\7-Zip\7z.exe" a -mx7 -stl -y "D:\SQL\Backup-Last-Only\\**07-10-2018-bkp.7z**" "D:\SQL\Backup\SklSistem_FULL_sob.BAK"

Alguna idea de donde me perdí el punto?

@echo off & setlocal enabledelayedexpansion
del D:\SQL\Backup-Last-Only\*.7z /Q
time/t|find "M" && set t=1,4* || set t=1,3*
for /f "skip=1 tokens=%t%" %%a in ('dir/a-d/tw/o-d D:\SQL\Backup\*FULL*.BAK^|find ":"') do (
 if %%a==%date:~-10% (
  set archdate=%%a
  set archdate=!archdate:.=-!
  "c:\Program Files\7-Zip\7z.exe" a -mx7 -stl -y "D:\SQL\Backup-Last-Only\!archdate!-bkp.7z" "D:\SQL\Backup\%%c" 
 ) else goto:eof
)

0voto

PJ Mahoney Puntos 889

Este problema es probable que sea causado por una diferencia en el "formato de fecha" y el %DATE% ambiental de la variable de salida de la secuencia de comandos genera cuando se utiliza "la cuenta se ejecuta desde manually" versus el formato que se establezca para con "la cuenta de usuario que el software de copia de seguridad se ejecuta".

Usted sólo tiene que utilizar set archdate=!archdate:/=-! más que el set archdate=!archdate:.=-! a reemplazar "/ con -" en lugar de ". con -", debido a que el formato de la fecha de la diferencia por el problema que tiene que explicar con su actual lógica.

Por otra parte, también se debe considerar el uso de algo un poco más universal como wmic os get LocalDateTime para establecer la variable que no depende del formato de fecha/configuración regional establecida por cada perfil de cuenta de usuario-consulte configuración Regional que no reconocen %FECHA% y el %TIEMPO% en archivos de proceso por lotes para algunos detalles.

Secuencia de comandos

@echo off & setlocal enabledelayedexpansion
del D:\SQL\Backup-Last-Only\*.7z /Q
time/t|find "M" && set t=1,4* || set t=1,3*
for /f "skip=1 tokens=%t%" %%a in ('dir/a-d/tw/o-d D:\SQL\Backup\*FULL*.BAK^|find ":"') do (
 if %%a==%date:~-10% (
  set archdate=%%a
  set archdate=!archdate:/=-!
  "c:\Program Files\7-Zip\7z.exe" a -mx7 -stl -y "D:\SQL\Backup-Last-Only\!archdate!-bkp.7z" "D:\SQL\Backup\%%c" 
 ) else goto:eof
)

Más Recursos

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: