gpt4 book ai didi

windows - 如何使用批处理文件重命名或创建包含其内容名称的 zip 文件

转载 作者:可可西里 更新时间:2023-11-01 10:31:47 28 4
gpt4 key购买 nike

我有一个批处理和一个 vbs 文件来压缩具有特定目录名称的文件夹并将其复制到另一个文件夹。

有没有人知道如何使用其内容名称(文件名)扩展我拥有的现有脚本来压缩文件夹?

使用以下两个脚本,我可以将目录压缩并复制到另一个文件夹。

bat :

CScript zip.vbs C:\TEMP\zip\source\JEAR_20190115 C:\TEMP\zip\target\JEAR.zip

vbs:

'Get command-line arguments.
Set objArgs = WScript.Arguments
InputFolder = objArgs(0)
ZipFile = objArgs(1)

'Create empty ZIP file.
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile,
True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)

Set objShell = CreateObject("Shell.Application")

Set source = objShell.NameSpace(InputFolder).Items

objShell.NameSpace(ZipFile).CopyHere(source)

'Required!
wScript.Sleep 2000

运行调用 vbs 的批处理文件,文件夹的内容(3 个文件)被压缩并复制到 bat 文件中描述的目标目录 (C:\TEMP\zip\target\JEAR.zip)。

输出文件名在 bat 文件中指定,但目标是获得压缩文件夹内容的文件名(文件名)。这是 JEAR_20180116.*

最佳答案

如果我答对了你的问题,我想你只想获取字符串,拆分最后一个目录名称,然后将其用作设置 zip 文件的变量:

@echo off
set "mypath=C:\TEMP\zip\source\JEAR_20190115"
if "%mypath:~-1%"=="\" set "mypath=%mypath:~0,-1%"
for %%i in (%mypath%) do set "last=%%~nxi"
CScript zip.vbs %mypath% C:\TEMP\zip\target\%last%.zip

请注意,如果您将路径更改为在您的路径上添加尾部反斜杠,即:

C:\TEMP\zip\source\JEAR_20190115\

你会想先摆脱它,但我们可以简单地测试它:

if "%mypath:~-1%"=="\" set "mypath=%mypath:~0,-1%"

那么完整的脚本将是:

@echo off
set "mypath=C:\TEMP\zip\source\JEAR_20190115"
if "%mypath:~-1%"=="\" set "mypath=%mypath:~0,-1%"
for %%i in (%mypath%) do set "last=%%~nxi"
CScript zip.vbs %mypath% C:\TEMP\zip\target\%last%.zip

但是如果你想将它命名为目录中的一个文件,你需要确保文件夹中的文件名都是相同的,因为我们只能使用一个名称来设置它,这将是列表中的最后一个文件,我们可以检查每个名称,但我假设您有同名但扩展名不同的文件:

@echo off
set "mypath=C:\TEMP\zip\source\JEAR_20190115"
for /f %%i in ('dir /b /a-d "%mypath%"') do set "last=%%~ni"
CScript zip.vbs %mypath% C:\TEMP\zip\target\%last%.zip

关于windows - 如何使用批处理文件重命名或创建包含其内容名称的 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54216417/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com