gpt4 book ai didi

batch-file - 使用批处理文件压缩

转载 作者:行者123 更新时间:2023-12-03 17:55:13 24 4
gpt4 key购买 nike

我需要创建使用批处理解压缩文件的条件。

方法如下:如果 dummy=1,批处理会将一个 xlsx 文件解压缩到特定文件夹,否则,它将另一个 xlsx 文件直接复制到该文件夹​​。

我的代码如下:

set dummy=1

If %dummy% EQU 1 (
SET CHEMIN=C:\file_to_unzip
cd %CHEMIN%
for /f %%j in ('dir /b %CHEMIN%\*.zip') do (
C:\PROGRA~1\WinZip\Winzip32 -min -e -o -j %CHEMIN%\%%j %CHEMIN%
)
COPY "C:\file_to_unzip\*.xlsx" "C:\destination"
) else (
COPY "C:\file_to_copy\*.xlsx" "C:\destination"
)

问题是没有 IF 条件,unzip 命令将正常工作。但是一旦包含了 IF 条件,cmd 就会说找不到 zip 文件。我不确定是什么原因导致了这个问题以及如何解决这个问题。

感谢任何帮助。

最佳答案

您是否启用了延迟扩展? 设置本地启用延迟扩展使用上面的示例代码,由于在 if 语句中设置了 CHEMIN 变量,将发生失败。如果在括号范围内设置变量,则在所有子范围结束之前,为该变量设置的新值将不可用。运行以下脚本以了解我的意思:

@echo off
set "xValue=1"
echo.%xValue%
if 1 EQU 1 (
set "xValue=2"
echo.%xValue%
echo.!xValue!
)

如果禁用延迟扩展(默认情况下),结果将是

1
1
1

如果启用,在开头添加setlocal enabledelayedexpansion

1
1
2

按如下方式尝试您的脚本。使用

setlocal enabledelayedexpansion

set dummy=1

If %dummy% EQU 1 (
SET CHEMIN=C:\file_to_unzip
cd !CHEMIN!
for /f %%j in ('dir /b !CHEMIN!\*.zip') do (
C:\PROGRA~1\WinZip\Winzip32 -min -e -o -j !CHEMIN!\%%j !CHEMIN!
)
COPY "C:\file_to_unzip\*.xlsx" "C:\destination"
) else (
COPY "C:\file_to_copy\*.xlsx" "C:\destination"
)

另一个解决方案是将 set CHEMIN=C:\file_to_unzip 行移到 if 语句之外。

关于batch-file - 使用批处理文件压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13794730/

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