Batch file 基于IF-Batch脚本设置变量

Batch 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%

我有一个脚本,我正在努力,我非常坚持。。。这可能只是一个语法错误,但我不确定

该脚本检查脚本中硬编码的每个文件的年代(该脚本是由另一个脚本生成的下标)。如果文件的保存时间超过20分钟,checkage2.bat脚本将输出%AGE%变量。如果文件的保存时间超过20分钟,则AGE=1,否则AGE=0

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,你的第一个答案已经足够了:)谢谢你的帮助