本来是想调用一个工具,每次重启后读取HDD的状态,并与初次的结果比较~所以,就把执行脚本写入随即启动,脚本文件夹加入的path中~代码如下
Install文件- @echo off
- reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v hdd_check /d %SystemDrive%\hdd_check\hdd_check.bat /f
- reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%path%;SystemDrive%\hdd_check\" /f
- call :%SystemDrive%\hdd_check\hdd_check.bat
复制代码 执行文件- @echo off
- if exist *logicalfail.txt (color 0c & echo Hdd did miss before!!! & call ipmi\ipmitool.exe wmi chassis identify force >>nul )
- :Compare
- call :Name
- if not exist first.txt (call arcconf.exe getconfig 1 >first.txt & set /a f=1) else (call arcconf.exe getconfig 1 >> %logname%.txt)
- if %f% equ 1 (findstr /C:"Slot" first.txt >>first_logical.txt & goto Reboot)
- findstr /C:"Slot" %logname%.txt >>%logname%_logicalfail.txt
- fc first_logical.txt %logname%_logicalfail.txt >>nul
- if %errorlevel% equ 0 (del /q %logname%.log & del /q %logname%_logicalfail.txt) else (color 0c & echo Some HDDs were missing!!! & call ipmi\ipmitool.exe wmi chassis identify force >>nul )
- set /a count+=1
- timeout 10
- if %count% lss 3 ( goto Compare ) else ( goto Reboot )
-
- :Name
- for /f "tokens=1-2" %%i in ('date /t') do (for /f "delims=/ tokens=1-3" %%k in ("%%j") do (set filedate=%%m_%%l_%%k))
- for /f "delims=:. tokens=1-3" %%i in ("%time%") do (set filetime=%%i_%%j_%%k)
- set filetime=%filetime: =% :: blank space have been replaced as null
- set logname=%filedate%_%filetime%
- goto :eof
-
- :Reboot
- shutdown -r -t 10
复制代码 很奇怪,我直接点击文件,什么问题都没有,但一旦让系统自动重启后运行文件,就出错,错误都是找不到文件,比如找不到logical.txt文件,找不到ipmitoo.exe文件,甚至第一句就执行错了!明明没有logicalfail.txt 文件,也执行了后面的代码。。找不到logical.txt文件,一般指定完整路径才行,默认情况下,都是去访问c:\windows\system32\,但我path不是明明改了吗 |