2015-07-21 96 views
1

我有一个脚本,它编排了多个进程,所有这些进程都在参数文件中定义的位置创建日志(即独立于脚本)。在运行这些过程之前,脚本清空日志位置,例如如何根据参数安全地编码目录删除?

rem LOGLOC is loaded from a parameter file 
Del /F /Q /S %LOGLOC%\*.* 

显然非常危险。如果由于任何原因LOGLOC被错误地定义,这可能是灾难性的。我修改脚本中添加一些安全...

if "%LOGLOC%" equ "" (
    ECHO FATAL ERROR: LOGLOC not defined 
    exit /b 1 
) 
Del /F /Q /S %LOGLOC%\*.* 

...但不占地方LOGLOC可能会被意外地定义为'.''..'实例。

有没有更好的模式来检查参数,然后以可能有害的方式使用它?

编辑:我添加了Fejese建议的以下验证规则。

  1. 检查它的长度至少为4个字符,例如C:\大号
  2. 验证,在AZ
  3. 验证CHAR 1该字符2,3 =:\
  4. 验证该路径存在且是一个目录

如果我可以计算出这些我将发布结果,但信用将去Fejese指向我在正确的方向...

+0

是否可以从用户那里获得确认? IE浏览器。使其互动?或者这个脚本是否必须在没有人为干预的情况 – fejese

+0

脚本每天晚上无人值守运行。 – andyb

回答

1

脚本将无法判断得到的参数是否安全或不,除非你设置了一些规则。

  • 您可以在必须匹配的脚本中硬编码前缀。
  • 您可以将删除模式限制为仅删除日志文件。