Windows 构建批处理程序以监视、创建和删除电池日志

Windows 构建批处理程序以监视、创建和删除电池日志,windows,batch-file,Windows,Batch File,我正在努力让Energy Reporter程序保存日期并重命名文件。我是批处理编程的新手。当我的OEMCreate DELL Latitude E5500电池在大约一年后耗尽时,我开始学习这种语言。我正在尝试制作一个程序,允许我监视电池统计报告并将其保存到我的计算机上。我希望能够添加一个功能,以图形显示电池随时间的退化情况。我在下面附上了当前代码。我需要弄清楚如何制作一个基于CMD的文件管理器 @echo OFF TITLE Energy-Reporter set CUR_YYYY=%date:

我正在努力让Energy Reporter程序保存日期并重命名文件。我是批处理编程的新手。当我的OEMCreate DELL Latitude E5500电池在大约一年后耗尽时,我开始学习这种语言。我正在尝试制作一个程序,允许我监视电池统计报告并将其保存到我的计算机上。我希望能够添加一个功能,以图形显示电池随时间的退化情况。我在下面附上了当前代码。我需要弄清楚如何制作一个基于CMD的文件管理器

@echo OFF
TITLE Energy-Reporter
set CUR_YYYY=%date:~10,4%
set CUR_MM=%date:~4,2%
set CUR_DD=%date:~7,2%
set CUR_HH=%time:~0,2%
if %CUR_HH% lss 10 (
    set CUR_HH=0%time:~1,1%
    set CUR_AP="AM"
)
if %CUR_HH% GEQ 12 (
    set CUR_HH=CUR_HH-12
    set CUR_AP="PM"
)

set CUR_NN=%time:~3,2%
set CUR_SS=%time:~6,2%
set CUR_MS=%time:~9,2%

set SUBFILENAME="%CUR_MM%-%CUR_DD%-%CUR_YYYY%_At_%CUR_HH%-%CUR_NN%-%CUR_SS% %CUR_AP%"

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
    IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params= %*
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------
IF EXIST "C:\Program Files\Energy-Report\." (
    ECHO DIRECTIORY FOUND
) else (
    ECHO CREATING "C:\Program Files\Energy-Report\"
    mkdir "C:\Program Files\Energy-Report\"
)
COLOR F4

:USER_SELECTER
    CLS
    ECHO ===============================================================
    ECHO Battery logger 
    ECHO ===============================================================
    ECHO Select an option:
    Choice /C codq /N /M "[C]reate power log | [O]pen report | [D]elete log | [Q]uit"
    If ErrorLevel 4 GoTo :EOF
    If ErrorLevel 3 GoTo DELETE_LOG
    If ErrorLevel 2 GoTo SAVED_LOGS
    If ErrorLevel 1 GOTO REPORT_DATA
    PAUSE
    GOTO USER_SELECTER

:REPORT_DATA
    cd "C:\Program Files\Energy-Report\"
    powercfg -energy
    REN "Energy-Report.html" "energy-report_%SUBFILENAME%.html"
    PAUSE
    GOTO USER_SELECTER

:SAVED_LOGS
    cd "C:\Program Files\Energy-Report\"
    DIR
    PAUSE
    GOTO USER_SELECTER

:DELETE_LOG
    SET /P Entry_name=log to be erased
    DELETE "C:\%Program Files%\Energy-Report\%Entry_name%"
    PAUSE
    GOTO USER_SELECTER
我已经将所有代码上传到我的网站上,供那些对代码开发感兴趣的人使用

如果我没有机会更新堆栈溢出版本,则可以通过运行代码段获得最新版本


修复这些问题,
存在
/%userprofile%\
设置\p
。另外,我不确定您为什么要使用32位版本的
cacls
。我还建议您使用
choice.exe
而不是
SET/P
,即
choice/C codq/N/m“[C]创建电源日志|[O]笔报告|[D]elete log |[Q]uit”
。使用
如果错误级别4转到:EOF
如果错误级别3转到删除日志
如果错误级别2转到保存日志
,则您的固定
cd/%userprofile%\desktop
行。
如果存在“file.ext”..
如果不存在“file.ext”..
%PROCESSOR\u ARCHITECTURE%
为“AMD64”(大写)(至少在我的系统上),因此您的
IF
永远不会为真。请更正字符串或使用
IF/i
忽略大小写。您创建
%SUBFILENAME%
的方法取决于区域设置。为了提供帮助,我们需要查看您的
echo%date%
输出(或者您使用修复这些问题,
EXSIST
/%userprofile%\
SET\p
。此外,我不知道您为什么要使用32位版本的
cacls
。我还建议您使用
choice.exe
而不是
SET/p
,即
choice/C codq/N/m”[C]reate power log[O]pen report.[D]elete log |[Q]uit“
。如果错误级别4转到:EOF,
如果错误级别3转到删除日志
如果错误级别2转到保存日志
,则您的固定
cd/%userprofile%\desktop
行。
如果存在“file.ext”..
如果不存在“file.ext”..
%“AMD64”(大写)(至少在我的系统上是如此),因此您的
IF
将永远不会为真。请更正字符串或使用
IF/i
忽略大小写。您创建
%SUBFILENAME%
的方式取决于区域设置。为了提供帮助,我们需要查看您的
echo%date%
输出(或您使用