windows - Windows 命令在批处理文件中不断失败,但不是命令提示符中的命令
问题描述
我正在从命令提示符和批处理文件中运行这个简单的命令。尽管两者都“起作用”,因为文件被复制到目标,但从批处理运行时返回代码始终为 1,从命令提示符运行时返回代码始终为 0。
copy /Y d:\my.zip C:\my\target\
我不知道哪里错了,除了当我看到返回码
@echo on
任何提示表示赞赏。
更新
我进一步挖掘并注意到我在一个if NOT %errorlevel% == 0 ()
块内执行命令,一旦我将它移出然后它运行正常。我已经setlocal enabledelayedexpansion
and setlocal enableextensions
,所以我认为我应该可以在 if 块内做一些事情,但事实证明这是一个坏主意。你能解释一下我最初做错了什么吗?
旧代码
setlocal enabledelayedexpansion
setlocal enableextensions
where mycmd
if NOT %errorlevel% == 0 (
copy /Y d:\my.zip C:\my\target\
if NOT %errorlevel% == 0 (
echo Failed to copy
goto :fail
)
start /wait cmd /c "tar -xvf c:\my\target\my.zip -C c:\my\target\"
if NOT %errorlevel% == 0 (
echo Failed to unzip
goto :fail
)
setx PATH "%PATH%;c:\my\target"
if NOT %errorlevel% == 0 (
echo Failed to update user path
goto :fail
)
)
顶级 if 块中的所有这些命令都失败了。我认为延迟扩展可以与初始的 一起使用setlocal enabledelayedexpansion
,但事实并非如此。
我哪里错了?
解决方案
推荐阅读
- c++ - 为什么将枚举值命名为“IN”会导致语法错误?
- wso2 - WSO2 helm pattern-1 失败,配置映射“apim-conf”已经存在
- asp.net-web-api - 如何在 WebApiConfig.cs 中引用 CORS 命名空间?
- javascript - Django - 用于初始化表单的 Ajax POST JS 变量
- ruby-on-rails-5 - 除非重新加载页面,否则 ActionCable 频道不会连接
- discord.py - AttributeError:“str”对象没有属性“channel”
- django - Django smpt 电子邮件后端降低性能
- google-apps-script - 目录用户更新未包含在资源中的清除字段
- arrays - 使用 SQL Server 函数将 JSON 数组分解为子表
- azure-devops - 当前环境不支持从 TTY 进行交互式阅读??Azure 管道,Anypoint