[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理path让系统自动重启后运行文件为何出错?

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

试试这样看:Install.bat
  1. @echo off
  2. reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v hdd_check /d %SystemDrive%\hdd_check\hdd_check.bat /f
  3. call %SystemDrive%\hdd_check\hdd_check.bat
复制代码
执行文件
第1、2行之间插入一行:
pushd "%~dp0"

TOP

这样SET呢  然后在后面引用
还有就是注意你的工作目录
  1. for %%i in ("logical.txt" "logicalfail.txt") do set "%%~ni_ph=%%~$PATH:i"
复制代码

TOP

回复 3# terse


    改文件比较的部分?

TOP

返回列表