Batch file 基于IF-Batch脚本设置变量
我有一个脚本,我正在努力,我非常坚持。。。这可能只是一个语法错误,但我不确定 该脚本检查脚本中硬编码的每个文件的年代(该脚本是由另一个脚本生成的下标)。如果文件的保存时间超过20分钟,checkage2.bat脚本将输出%AGE%变量。如果文件的保存时间超过20分钟,则AGE=1,否则AGE=0Batch file 基于IF-Batch脚本设置变量,batch-file,cmd,Batch File,Cmd,我有一个脚本,我正在努力,我非常坚持。。。这可能只是一个语法错误,但我不确定 该脚本检查脚本中硬编码的每个文件的年代(该脚本是由另一个脚本生成的下标)。如果文件的保存时间超过20分钟,checkage2.bat脚本将输出%AGE%变量。如果文件的保存时间超过20分钟,则AGE=1,否则AGE=0 SET FILEPATH="C:\PathToFile\Filename1.slf" CALL C:\PathToScript\checkage2.bat %FILEPATH% IF %AGE%
SET FILEPATH="C:\PathToFile\Filename1.slf"
CALL C:\PathToScript\checkage2.bat %FILEPATH%
IF %AGE% EQU 1 OUTPUT=%OUTPUT% %FILEPATH%
SET FILEPATH="C:\PathToFile\Filename2.slf"
CALL C:\PathToScript\checkage2.bat %FILEPATH%
IF %AGE% EQU 1 OUTPUT=%OUTPUT% %FILEPATH%
SET FILEPATH="C:\PathToFile\Filename3.slf"
CALL C:\PathToScript\checkage2.bat %FILEPATH%
IF %AGE% EQU 1 OUTPUT=%OUTPUT% %FILEPATH%
IF (%OUTPUT%) == () GOTO OK
ECHO CRITICAL: %OUTPUT%
PAUSE
:OK
ECHO OK: All files within 20 minute time range
PAUSE
我试图输出一个超过20分钟的所有文件的完整列表,但我似乎无法正确地得到它!非常感谢您的帮助,谢谢大家
IF %AGE% EQU 1 OUTPUT=%OUTPUT% %FILEPATH%
如果要设置输出=…可能问题在于变量赋值中缺少
SET
命令,以及元素之间有空格时将失败的if
条件
SET "OUTPUT="
SET FILEPATH="C:\PathToFile\Filename1.slf"
CALL C:\PathToScript\checkage2.bat %FILEPATH%
IF %AGE% EQU 1 SET OUTPUT=%OUTPUT% %FILEPATH%
SET FILEPATH="C:\PathToFile\Filename2.slf"
CALL C:\PathToScript\checkage2.bat %FILEPATH%
IF %AGE% EQU 1 SET OUTPUT=%OUTPUT% %FILEPATH%
SET FILEPATH="C:\PathToFile\Filename3.slf"
CALL C:\PathToScript\checkage2.bat %FILEPATH%
IF %AGE% EQU 1 SET OUTPUT=%OUTPUT% %FILEPATH%
IF DEFINED OUTPUT (
ECHO CRITICAL: %OUTPUT%
) ELSE (
ECHO OK: All files within 20 minute time range
)
PAUSE
这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。@KickButtowski Dingo的肾脏!我的回答是显而易见的-但是如果你真的需要它是明确的(这被称为“勺子喂食”),那么
if%AGE%eq 1 OUTPUT=%OUTPUT%%FILEPATH%
应该是if%AGE%eq 1 SET OUTPUT=%OUTPUT%%FILEPATH%
因为在批处理中,要SET
一个变量,你需要使用SET
关键字,不要简单地使用所需的表达,正如MCND在整整一分钟后发布的那样。谢谢Magoo,你的第一个答案已经足够了:)谢谢你的帮助