我想我对ERRORLEVEL和%ERRORLEVEL%有一个基本的理解,但是!ERRORLEVEL!弄糊涂了。
我正在制作一个脚本,它调用一个可执行文件,然后任务列表来查看它是否正在运行,如果它在运行,然后将其杀死,然后尝试输出错误级别并重复其他exe,我意识到我真的不理解批处理中的错误级别。
我设置了一个等于!错误级别的变量!然后在回显中使用没有引号的变量,当集合后出现错误时,变量从一个uint16更改为另一个uint16,就像对真实的引用而不是副本的引用一样。我想要副本。有人能解释一下这两个人的区别吗?
更新:这是我正在做的片段。
for %%P in (%executableList%
我有个批处理文件做了几件事。如果其中一个失败了,我想退出整个程序。例如:
@echo off
type foo.txt 2>> error.txt >> success.txt
mkdir bob
如果找不到文件foo.txt,那么我希望将stderr消息附加到error.txt文件中,否则foo.txt的内容将被附加到success.txt。基本上,如果type命令返回一个stderr,那么我希望批处理文件退出,而不是创建一个新目录。如何判断是否发生错误,并决定是否需要继续执行下一个命令?
我正在尝试从我的批处理文件中获得以下输出:
ERRORLEVEL has been reset from 4 to 0
..。通过使用以下代码:
@echo ERRORLEVEL has been reset from %errorlevel% to & verify>nul & @echo %errorlevel
..。问题是: 1)错误级别没有重置为零,2)我在最后得到回车:
ERRORLEVEL has been reset from 4 to
4
..。当我把它分成不同的行时,它会起作用:
@echo Reset ERRORLEVEL
verify&
您好,我正在尝试创建一个批处理文件,以便从记事本文件中的服务器列表中筛选出具有RDP/ICA侦听器的服务器。我使用以下语法创建了此脚本,但由于某些原因,它不能像预期的那样工作,有人能帮我解决这个问题吗?
我在computer.txt文件中有一个服务器列表,我正在尝试查找关闭的服务器,如果errorlevel为0,则表示找到了向下的字符串,我希望在listenerdown.txt中打印服务器名称,但由于某些原因,如果我执行批处理文件,computer.txt中的所有服务器都会写入listenerdown.txt文件
下面是批处理文件
for /f %%i in (computer.txt) do
@echo off
color 4
ping localhost 2.5 > nul
echo Welcome to the configuration menu.
echo Move AH1.exe and AH2.exe to your desktop.
echo This only works the first time
echo SO BE CAREFUL!
echo Would you like this to start on computer startup?
echo say "yes" or "no" below.
set /p opt
我有一个包含以下内容的批处理文件名xyz.bat
@echo off
echo 1.Cleaning all four project.
call apacheant\bin\ant -buildfile clean-all.xml
当第一个调用结束时,它会在控制台上写入,生成成功或生成失败。
如何验证此调用是否失败或传递,此外,在此条件下,我希望决定下一次调用的执行。
echo 1.Building all four project.
call apacheant\bin\ant -buildfile build-all.xml
@echo on
假设我们有这样的CMD批处理脚本代码:
CALL :SUB
REM DO SOMETHING WITH THE RESULT HERE (300)
EXIT
:SUB
EXIT /B 300
如果SUB的结果是300,那么可以使用什么变量或机制来代替上面的REMarked来做一件事,如果没有呢?我想在里面写这样的东西:
IF %RESULT% EQU 300 (
ECHO Hi
) ELSE (
ECHO Bye
)
如果我错了,请纠正我,但是我认为我的机制(条件语句)在这里很好,但是变量呢?
在批处理文件中,我可以得到下面的消息框,其中有一个“ok”按钮
mshta.exe vbscript:Execute^("msgbox ""Registers NOT submitted""& VbCrLf & VbCrLf &""Tap or click 'Ok' to exit"",vbexclamation,""Please check your internet connection"":close"^)
我可以添加是的,没有按钮,这样
我正在重新创建老年人滚动III:成批的Morrowind,我目前正在编写角色创建程序,其中包括根据种族和性别确定玩家的基本统计数据。我连续地将if-语句链接在一起,以要求所选属性设置的两个条件满足。然而,每次选择种族和性别时,第二个条件总是被忽略,如果角色是男性的话,属性就会被设置为。我相信我在这里的某个地方可能犯了一个简单的错误(就像我经常做的那样)。下面是完整的代码,以防我在某个意想不到的地方出错:
@echo off
:start
title Morrowind Build 6-21-19
echo Choose your character's race.
echo.
echo
我想问您是否可以提示我一个更优雅的解决方案(比本文末尾提供的解决方案):我想运行一个批处理脚本,如果(至少)其中一个指令失败,它将继续运行其他指令,但返回一个错误级别,指示失败(例如,1)。
我测试过(并工作)的一个解决方案是:
set instructionfailed=0
**INSTRUCTION THAT WILL FAIL (ex. copy a a)**
if %errorlevel% == 1 set instructionfailed=1
**INSTRUCTION THAT WILL SUCCEED (ex.(supposing abcdefg does not exist)
根据我的理解,下面的命令(添加了调试行)只应该将echo的输出重定向到一个文件,如果它已经存在的话。
但是,if exist %test0%似乎总是用回显的输出填充文件(如果不存在就创建它)。
有人知道是怎么回事吗?
@echo off
type test.bat
set test0="e:\documents and settings\administrator\desktop\test.log"
echo.&echo.
if exist %test0% (echo !!Exists!!) else (echo !!Doesn't Exist!!)
这是我的代码:
wget url
if %errorlevel% gtr 0 (
powershell.exe restart-service wampapache
SET errorlevel= 0
PING -n 41 127.0.0.1>nul
wget url
if %errorlevel% gtr 0 (
THIS PART COMES UP EVEN THOUGH THE wget can access the url and apache is up
)
)
似乎第一个错误级别被设置了,然后后续的wget就不能
我正在尝试编写一个批处理文件,它将在100+ PC的列表上搜索一个文件,并输出3种情况中的一种:如果PC有该文件,如果它没有,或者它没有被唤醒。最后一部分是我搞不懂的部分。我希望脚本创建3个独立的csv文件- HAS_FILE、NEEDS_FILE和NOT_THERE。我可以成功地运行这段代码(假设“ComputerList”中的所有PC都是"up"):
for /f "tokens=*" %%i in (C:\ComputerList.csv) do (
IF EXIST "\\%%i\c$\Program Files\F5 Networks\iCon
我有一个批处理文件,如下所示;
CD C:\MyFolder
findstr /c:"stringToCheck" fileToCheck.bat
IF NOT XCOPY "C:\OtherFolder\fileToCheck.bat" "C:\MyFolder" /s /y
我收到一个错误(此时“C:\OtherFolder\fileToCheck.bat”是意外的)。在尝试执行此操作时。
请告诉我我做错了什么。
我通常不创建批处理文件,因为我只是在运行框或命令提示符中输入所需的内容,但我正在尝试创建一个批处理文件,以便访问windows中的基本实用程序并检查内容(我真的不需要它,但我想我爸爸会发现它很有帮助)。我对python很熟悉(但又是新手),所以如果使用python做这些事情是更好的选择,我可以这么做,但是我认为batch是做这么简单事情的最佳方式。问题出在菜单上。我想是因为我的菜单,所以在选择命令之前,它会循环所有的命令。这方面的任何帮助都将得到充分的感谢,批处理脚本位于下面的代码框中。
echo off
:menu
echo This is a simple cleanup and repa
%错误级别%在WindowsXP中不起作用。
如我所知,当发生错误时,%errorlevel% set 1或以上值,如果没有错误,它将设置0。
但是,即使没有错误,%错误级别%是1,而且我设置了%错误级别% 0,即使有错误%错误级别%是基数0。
我认为操作系统不会改变XP中的%错误级别%。
在Win7中,它完全起作用。
@echo off
setlocal enabledelayedexpansion
call dir
echo errorlevel=%errorlevel%
REM expected errorlevel=0 but 1
call dor
echo errorlevel
我编写了一个批处理脚本,以便从用户那里获得“是”或“否”。而且它是有效的。但是,当我将所有内容放在命令之间的一行时,它就不再起作用了。
下面是工作脚本:
@echo off
set /p Input=continue?
if "%Input%"=="n" exit
@echo continue
PAUSE
下面是不起作用的脚本:
@echo off & set /p Input=continue? & if "%Input%"=="n" exit & @echo continue & PAUSE
这