获取未知文件名以批量压缩文件

时间:2015-04-21 12:02:13

标签: windows batch-file zip

我正在寻找一种方法来压缩文件名未知的文件。我正在努力如何将文件名转换为我的变量。 这是我的代码:

set HOST=%1
set DRIVELTR=%2
set OMGEVING=%3

FOR %%i IN (\\%HOST%\%DRIVELTR%$\%OMGEVING%\*.*) DO set filename="%%~i"

"C:\program files\7-zip\7z.exe" a -r -sdel  \\%HOST%\%DRIVELTR%$\%OMGEVING%\filename.zip \\%HOST%\%DRIVELTR%$\%OMGEVING%\filename.txt

1 个答案:

答案 0 :(得分:2)

FOR %%i IN ("\\%~1\%~2$\%~3\*.*") DO (
    "C:\program files\7-zip\7z.exe" a -r -sdel  "%%~dpni.zip" "%%~fi"
)

哪里

  • %~1%~3是没有引号的批处理文件的参数

  • %%~dpni%%i引用的文件的驱动器,路径和名称(不带扩展名)

  • %%~fi%%i

  • 引用的文件的完整路径

注意:由于.zip文件是在正在迭代的同一文件夹中生成的,for循环可能会检索新的.zip文件。如果您无法缩小通配符或在其他位置生成.zip文件,则可以在尝试压缩文件之前检查文件扩展名是否为.zip

FOR %%i IN ("\\%~1\%~2$\%~3\*.*") DO if /i not "%%~xi"==".zip" (
    "C:\program files\7-zip\7z.exe" a -r -sdel  "%%~dpni.zip" "%%~fi"
)