7zip批处理创建文件夹而不是文件名

拉比

我有一个简单的Windows批处理脚本,该脚本由备份软件作为预备份操作运行。它只是查找最新的SQL转储,将其压缩为7倍较小的7zip存档,然后由云备份将其提取并发送到云存储以进行存档。

BATCH使用前面的DATE创建文件名:07-10-2018-bak.7z

但是我对BATCH文件有问题:

  • 当我手动运行它时,它执行得很好,并在提供的文件夹中创建文件名07-10-2018-bak.7z
  • 但是当我通过备份软件(以SYSTEM用户身份)作为预备份操作运行它时,它会为每个DASH创建SUB-FOLDERS,如下所示: \07\10\2018-bak.7z

我执行了ECHO每个命令行,并且呈现得很好。即使我手动运行回显行,它们也不会创建文件夹,但应创建包含日期的完整文件名:

"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"

知道我错过了重点吗?

@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
)
IT暴徒忍者

此问题可能是由于“日期格式”和%DATE%脚本使用“从手动运行它的帐户”生成环境变量输出与使用“备份软件执行的用户帐户”设置的格式不同而导致的”。

你只需要使用set archdate=!archdate:/=-!,而不是set archdate=!archdate:.=-!取代“/-”而不是“.-”由于每个问题的日期格式差异您遇到你当前的逻辑解释。

此外,你也应该考虑使用一些更普遍一点,例如wmic os get LocalDateTime设置变量,它不依赖于每个每个用户帐户的日期格式/区域设置的个人资料,看到语言环境的不了解%DATE%和%TIME%在批处理文件中为一些细节。

脚本

@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
)

更多资源

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

批处理文件以基于文件名创建文件夹

批处理命令根据文件名创建文件夹并将文件/文件夹移动到创建的文件夹

R:使用文件名创建文件夹

根据文件名自动创建文件夹

根据文件名创建文件夹

根据文件名 bash 创建文件夹

批处理如何使用 7zip 将多个 zip 文件解压缩到其原始文件夹?

批处理从文件名中提取一部分,并使用此部分创建文件夹

批处理:找到几个文件夹并为每个文件夹创建文件

通过书号创建文件夹,从批处理文件下载文件,将文件移至文件夹

批处理文件:列出文件名和文件夹名

批量创建文件夹并根据部分文件名重定位文件

为每个文件名创建文件夹并移动文件

需要.bat文件,它将根据文件名创建文件夹

根据部分文件名批量创建文件夹并将文件移动到文件夹

批处理文件以创建文件夹,其增量文件夹名称为Name 1,Name 2。

无法从 C# 运行的批处理文件创建文件夹

批处理文件-根据日期提前1天创建文件夹

如何在批处理文件中动态创建文件夹-CMD

使用批处理 (.bat) 文件创建文件夹名称 %prevMonth%"-"%prevYear=%"-01"

使用部分名称创建文件夹和移动文件的批处理脚本

批处理文件命令,用于根据当前日期创建文件名

在批处理文件中使用日期和时间来创建文件名

将文件名插入多个子文件夹中的文件的批处理脚本

批处理文件,用于获取文件夹中的所有文件名

批处理列表文件夹,计算pdf文件并获取文件名

窗口批处理文件-无法在指定的文件夹中获取文件名

批处理逐行列出txt文件中文件夹中的文件名

使用python根据包含日期的文件名创建文件夹和子文件夹