我在这个论坛上真的很新,所以我希望尊重你所有的规则,如果没有请原谅我!
我刚刚开始研究批处理文件,我试图通过批量传递参数来执行一个简单的程序(最后一个目的是提交一个传递日期参数的SAS程序)。
是否可以激活一种列表,我可以在预先定义的参数之间选择一些?
- >这是我工作的真正目的
我试图"玩"使用此代码:
@echo off
title Setting up execution period
echo Insert your date in the format GGMMMAAAA (es: '31DEC2003'D).
SET /p data_par=Insert the date to filter datas:
SET first_byte=%data_par:~1,1%
if "%first_byte%"=="" (
GOTO tag1
) else (
GOTO tag2
)
:tag1
msg * Missing value
:tag2
msg * Well done!
pause
我已经尝试了很多方法,但看起来IF声明没有执行,我不知道我哪里错了。
另一个问题:为什么在按下"输入" (执行set / p命令后)?
- >已经解决了这个问题,然后暂停"暂停"脚本末尾的命令。
谢谢大家的关注,
祝你好运!
Squotty
答案 0 :(得分:1)
在代码末尾添加pause
以查看错误消息。
使用if
时else
的正确语法是:
if "a"=="b" (dosomething) else (dosemethingelse)
你可以用几行来写它,但是有规则,在哪里设置副词:
if "a"=="b" (
echo this is code for something
rem more lines possible
) else (
echo this is code for something else
rem more lines possible
)
第一个(
必须与if
位于同一行。
) else (
必须在一条线上。
如果按下只需输入set /p
,变量将保持不变(可能为空),因此您的代码将继续使用代码并点击else
行。在这里它会告诉你"否则不会被识别为命令..."
在你的tagx
你应该告诉批次,在哪里停止执行。使用goto :eof
停止执行,或goto somewhere
继续执行其他操作。如果你不这样做,它将继续下一行。
示例:
:tag1
msg * Missing value
goto :eof
:tag2
msg * Well done!
goto :continue
pause
:continue
REM go on with the program...
(注意:永远不会达到pause
。我会在那里向你展示,事情是如何运作的)
编辑而不只是检查一些输入,您可以检查格式是否正确:
echo %data_par%|findstr /r "[0-3][0-9][A-Z][A-Z][A-Z][1-2]0[0-9][0-9]">nul && (
echo correct format
goto continue
) || (
echo wrong format
goto startover
)
它不是防弹(例如。38ABC2019
将被视为"正确"),但至少它会检查正确的格式(例如15.12.2019
或{ {1}}"不正确")
答案 1 :(得分:1)
@ECHO OFF
SETLOCAL
SET "item1=date1"
SET "item2=date2"
SET "item3=date3"
SET "item4=date4"
FOR /l %%a IN (1,1,4) DO CALL ECHO(%%a. %%item%%a%%
ECHO(U. User-specified
choice /c 1234u
CALL SET selection=%%item%errorlevel%%%
IF NOT DEFINED selection (
SET /p selection="Your date-selection ? "
)
IF NOT DEFINED selection ECHO No selection made&GOTO :EOF
ECHO selection is %selection%
GOTO :EOF
此代码可能有所帮助。
使用批处理窗口开发批处理代码是正常的。只需设置command prompt
(开始>程序>附件)的快捷方式,即可一遍又一遍地运行脚本并在屏幕上保留结果,而无需使用“暂停”。可以使用提示中的notepad batchfilename.bat
来完成编辑(如果您使用记事本作为编辑器 - 如果使用更好的东西,则替换该程序的名称)。您可以通过执行exit
命令退出批处理窗口。
您还可以使用commandname /?
获得有关批处理命令的帮助 - 它通常很神秘并且有很多怪癖。这里提供了广泛的帮助。