
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
::
::
:: 如非必要,请勿随意修改代码,以免运行出错。
:: 尊重劳动成果,保留版权声明。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off & setlocal enabledelayedexpansion
cd /d %~dp0 & set PROG=获取本机服务列表
if not "%~n0"=="%PROG%" move /y "%~0" "%PROG%%~x0" >nul&start "" "%PROG%%~x0"
color 0a & title %PROG% By 依梦琴瑶
echo 正在努力获取本机服务列表,请稍后。。。
(echo 显示名称^|^|^|^|服务名称^|^|^|^|描述^|^|^|^|状态^|^|^|^|启动类型^|^|^|^|登录为^|^|^|^|执行路径
for /f "tokens=2 delims=:" %%a in ('sc query state^= all ^| findstr "^SERVICE_NAME: \<STATE"') do (
for %%c in (DISPLAY_NAME,SERVICE_NAME,DESCRIPTION,STATE,START_TYPE,SERVICE_START_NAME,BINARY_PATH_NAME) do if not defined %%c set "%%c=(无)"
set /a Num+=1
if !Num! equ 2 (
echo "%%a" | findstr "RUNNING" >nul && set "STATE=已启动" || set "STATE=已停止"
set Num=0
echo !DISPLAY_NAME!^|^|^|^|!SERVICE_NAME!^|^|^|^|!DESCRIPTION!^|^|^|^|!STATE!^|^|^|^|!START_TYPE!^|^|^|^|!SERVICE_START_NAME!^|^|^|^|!BINARY_PATH_NAME!
) else (
for /f "tokens=2 delims=:" %%b in ('sc qdescription%%a') do (
set "DESCRIPTION=%%b"
set "DESCRIPTION=!DESCRIPTION:~2!"
)
for /f "tokens=2 delims==" %%b in ('sc GetDisplayName%%a') do (
set "DISPLAY_NAME=%%b"
set "DISPLAY_NAME=!DISPLAY_NAME:~1!"
)
for /f "delims=" %%b in ('sc qc%%a ^| findstr "\<START_TYPE \<BINARY_PATH_NAME \<SERVICE_START_NAME"') do (
set /a Cut+=1
if !Cut! equ 3 (
echo "%%b" | findstr /i "LocalService" >nul && set "SERVICE_START_NAME=本地服务" || (
echo "%%b" | findstr /i "LocalSystem" >nul && set "SERVICE_START_NAME=本地系统" || (
echo "%%b" | findstr /i "NetworkService" >nul && set "SERVICE_START_NAME=网络服务" || (
set "SERVICE_START_NAME=%%b"
set "SERVICE_START_NAME=!SERVICE_START_NAME: SERVICE_START_NAME : =!"
)
)
)
set Cut=0
) else (
if !Cut! equ 2 (
set "BINARY_PATH_NAME=%%b"
set "BINARY_PATH_NAME=!BINARY_PATH_NAME: BINARY_PATH_NAME : =!"
) else (
echo "%%b" | findstr "DELAYED" >nul && set "START_TYPE=自动(延迟启动)" || (
echo "%%b" | findstr "AUTO_START" >nul && set "START_TYPE=自动" || (
echo "%%b" | findstr "DEMAND_START" >nul && set "START_TYPE=手动" || set "START_TYPE=禁用"
)
)
)
)
)
set "SERVICE_NAME=%%a"
set "SERVICE_NAME=!SERVICE_NAME:~1!"
)
))>ymqy$
:SortingList
for /f "skip=1 tokens=1 delims=[]" %%a in ('find /n "::SortingListVBS::" "%~0"') do set Line=%%~a
more +%Line% "%~0">SortingVBS
(cscript //nologo //e:jscript "SortingVBS" < ymqy$)>"%~dp0%COMPUTERNAME%_服务列表Log"
del /f/q ymqy$ SortingVBS
cls & echo 本机服务列表已输出至 "%~dp0%COMPUTERNAME%_服务列表Log"
echo, & echo 请按任意建退出 & pause>nul
exit
::SortingListVBS::
var i = 0, arr = [], max = [];
var reg = /[^\x00-\xff]/g;
while(!WSHStdInAtEndOfStream){
var strLine = WSHStdInReadLine();
if(!/^\s$/test(strLine)) {
arr[i] = strLinesplit('||');
for(var j=0; j<arr[i]length; j++) {
var len = arr[i][j]replace(reg, '')length;
if(!max[j] || len > max[j]) max[j] = len;
}
i++;
}
}
for(var i=0; i<arrlength; i++) {
var s = '';
for(var j=0; j<arr[i]length; j++) {
var len = max[j] - arr[i][j]replace(reg, '')length;
var space = ' ';
for (var k=0; k<len; k++) space += ' ';
s += arr[i][j] + space;
}
WScriptEcho(s);
}
迟到的回答,实在抱歉,事儿有点多。生成的列表信息保存在脚本目录下,名字为当前系统的本机名。后缀为Log。
你运行,看看符不符合你的要求。
获取路径:
TCHAR szPath[MAX_PATH];
SHGetFolderPath(NULL, CSIDL_COMMON_DOCUMENTS, NULL, SHGFP
当前用户文档路径?
不太明白什么意思,不过可以有个相对路径格式
/save/abcexe 程序所在根目录下save文件夹下的abcexe文件
/save/abceexe 程序所在上级菜单中save文件夹下的abceexe文件
可以创建文件
string sDir = 文件路径;
DirectoryInfo dinfo = new DirectoryInfo(sDir);
if (!dinfoExists)
{
dinfoCreate(); //没有则创建
}
也可以通过输入输出流往创建的文件中写入文字
以上就是关于如何使用bat脚本获取电脑上所有windows服务的信息全部的内容,包括:如何使用bat脚本获取电脑上所有windows服务的信息、windows 如何获取当前账户下我的文档的路径、C# 开发的windows 服务 不能获取当前用户的文档路径吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)