2015-07-21 62 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

腳本將無法判斷得到的參數是否安全或不,除非你設置了一些規則。

  • 您可以在必須匹配的腳本中硬編碼前綴。
  • 您可以將刪除模式限制爲僅刪除日誌文件。