Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file ';重命名';命令将ERRORLEVEL设置为0,即使失败也是如此_Batch File_Cmd - Fatal编程技术网

Batch file ';重命名';命令将ERRORLEVEL设置为0,即使失败也是如此

Batch file ';重命名';命令将ERRORLEVEL设置为0,即使失败也是如此,batch-file,cmd,Batch File,Cmd,在我的批处理文件中,我想知道如果rename失败,为什么我不能创建一个钩子来处理错误。我创建了一个文件夹foo,并让一个shell将其cwd更改为foo,以便该文件夹不可重命名。然后我开始我的脚本: for %%x in (%PROGRAMFILES(X86)%") do ( for %%y in (foo) do ( if exist "%%~x\%%~y" ( rename "%%~x\%%~y" _to_be_removed

在我的批处理文件中,我想知道如果
rename
失败,为什么我不能创建一个钩子来处理错误。我创建了一个文件夹
foo
,并让一个shell将其cwd更改为foo,以便该文件夹不可重命名。然后我开始我的脚本:

for %%x in (%PROGRAMFILES(X86)%") do (
    for %%y in (foo) do (
        if exist "%%~x\%%~y" (
            rename "%%~x\%%~y" _to_be_removed
            echo %ERRORLEVEL%
            IF NOT %ERRORLEVEL% EQU 0 (echo We got a problem.)
        )
    )
)
很遗憾,我收到通知,该文件夹无法删除,因为它正在使用中:

Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.
0

嗯<代码>重命名失败,但
%ERRORLEVEL%
为零?这应该是不可能的,否?

要获取在
(代码块)
内更改的新值,您需要使用以下表单:
!错误等级
并在开始时包含
setlocalenabledelayedexpansion
命令;在此论坛中搜索“延迟扩展”

在命令提示符窗口中运行的帮助输出
if/?
和旧的Microsoft支持文章解释了如何在命令块外部以及从MS-DOS到当前最新的Windows 10 Fall Creators更新的命令块内部测试上一个命令/脚本/应用程序的退出代码

解决方法就是简单地使用

if errorlevel 1 echo We got a problem.
而不是台词

echo %ERRORLEVEL%
IF NOT %ERRORLEVEL% EQU 0 (echo We got a problem.)
如果以前执行的命令退出时的值大于或等于1表示执行错误,而不是0表示执行成功,那么测试就非常容易了

我建议还可以查看堆栈溢出页面:


要获取在
(代码块)
内更改的新值,您需要使用以下表单:
!错误等级
并在开始时包含
setlocalenabledelayedexpansion
命令;在此论坛中搜索“延迟扩展”。。。我还建议你复习一下@Aacini:太好了,就这样。如果你能给我一个答案,我可以接受!如果打开cmd提示符并阅读
If
命令的帮助,也可以使用这种类型的错误检查<代码>如果ERRORLEVEL 1 ECHO出现问题。