Creating a script to gather PC information - to assist those asking for help
Moderator: DosItHelp
Re: Creating a script to gather PC information - to assist those asking for help
Great Then I hope no major bugs are left in the script.
Steffen
Steffen
Re: Creating a script to gather PC information - to assist those asking for help
I've run into a problem on my Win 10 machine at home. I thought the script was supposed to be non-destructive, but when I run the script it changes my console font from "Raster Fonts" size 8x12 to "Courier New" size 12. Ouch
The text becomes so small I can hardly read it.
Here is the result for my machine:
Most everything looks good, except the Date/Time format line surprises me. It claims the time is in 12 hour format, but the sample time is in 24 hour format (the same as I get using %TIME%).
Does the 12 hour indicator pertain to DIR output? If so, then perhaps the info layout should change.
Dave Benham
The text becomes so small I can hardly read it.
Here is the result for my machine:
Code: Select all
--------------------------------------------------------------------------------
Windows version : Microsoft Windows [Version 10.0.14393]
Product name : Windows 10 Pro, 64 bit
Performance indicators : Processor Cores: 4 Visible RAM: 4192432 kilobytes
Date/Time format : mm/dd/yy (12 hours) Mon 09/05/2016 23:35:49.16
Extensions : system: Enabled user: Enabled
Delayed expansion : system: Disabled user: Disabled
Locale name : en-US Code Pages: OEM 437 ANSI 1252
DIR format : 09/01/2016 01:03 AM 6,174,015,488 pagefile.sys
Permissions : Elevated Admin=No, Admin group=Yes
Missing from the tool collection: debug
Does the 12 hour indicator pertain to DIR output? If so, then perhaps the info layout should change.
Dave Benham
Re: Creating a script to gather PC information - to assist those asking for help
Thanks Dave!
Hu Reading values does change the font? Hard to believe I'll try to find somthing in the internet if any of the used commands has this side effect.
Good question. You are the first person that I know where the formats of %time% and DIR differ.
Steffen
dbenham wrote:I've run into a problem on my Win 10 machine at home. I thought the script was supposed to be non-destructive, but when I run the script it changes my console font from "Raster Fonts" size 8x12 to "Courier New" size 12. Ouch
Hu Reading values does change the font? Hard to believe I'll try to find somthing in the internet if any of the used commands has this side effect.
dbenham wrote:Does the 12 hour indicator pertain to DIR output? If so, then perhaps the info layout should change.
Good question. You are the first person that I know where the formats of %time% and DIR differ.
Steffen
Re: Creating a script to gather PC information - to assist those asking for help
Has anyone else tried Win 10 yet? My guess it is a Win 10 specific issue.aGerman wrote:dbenham wrote:I've run into a problem on my Win 10 machine at home. I thought the script was supposed to be non-destructive, but when I run the script it changes my console font from "Raster Fonts" size 8x12 to "Courier New" size 12. Ouch
Hu Reading values does change the font? Hard to believe I'll try to find somthing in the internet if any of the used commands has this side effect.
I'm pretty sure %TIME% always returns 24 hour time with centiseconds, regardless of locale. I believe the only thing that may change is the character used for the decimal point. DATE /T and %DATE% give the same format, but TIME /T and %TIME% do not.aGerman wrote:dbenham wrote:Does the 12 hour indicator pertain to DIR output? If so, then perhaps the info layout should change.
Good question. You are the first person that I know where the formats of %time% and DIR differ.
Code: Select all
C:\test>date /t
Tue 09/06/2016
C:\test>echo %date%
Tue 09/06/2016
C:\test>time /t
08:04 AM
C:\test>echo %time%
8:04:27.82
There is lots of time parsing code out there that depends on the %TIME% format, including on DosTips
Dave Benham
Re: Creating a script to gather PC information - to assist those asking for help
Yea
It works great on my work machine where REG has been blocked
What does "Admin group=Yes" mean I am surprised to see that result given that configuration of my machine is completely locked down.
I cannot do any of the following
Dave Benham
It works great on my work machine where REG has been blocked
Code: Select all
--------------------------------------------------------------------------------
Windows version : Microsoft Windows [Version 6.1.7601]
Product name : Windows 7 Enterprise, 32 bit
Performance indicators : Processor Cores: 4 Visible RAM: 3659820 kilobytes
Date/Time format : mm/dd/yy (12 hours) 09/06/2016 9:48:04.50
Extensions : system: Enabled user: Enabled
Delayed expansion : system: Disabled user: Disabled
Locale name : en-US Code Pages: OEM 437 ANSI 1252
DIR format : 08/24/2016 06:07 PM 3,747,655,680 pagefile.sys
Permissions : Elevated Admin=No, Admin group=Yes
What does "Admin group=Yes" mean I am surprised to see that result given that configuration of my machine is completely locked down.
I cannot do any of the following
- install software
- change the date or time
- I'm not sure, but I don't think I can open command prompt as administrator. The Window opens, but the title does not indicate admin mode.
Dave Benham
Re: Creating a script to gather PC information - to assist those asking for help
Thank's so much for testing Dave!
Yes I did at home. It's a 32 bit Home edition though.
That's a pretty logical assumption. Unfortunately I didn't find anything about it yet.
Thats good news
Actually it means that you belong to the local administrator group. No idea what your system admins did to restrict the permissions of that group. At least I hoped it would be an indicator if you would be able to gain elevated rights. Now it doesn't seem we could rely on it
Steffen
dbenham wrote:Has anyone else tried Win 10 yet? My guess it is a Win 10 specific issue.
Yes I did at home. It's a 32 bit Home edition though.
dbenham wrote:I'm pretty sure %TIME% always returns 24 hour time with centiseconds, regardless of locale. I believe the only thing that may change is the character used for the decimal point. DATE /T and %DATE% give the same format, but TIME /T and %TIME% do not.
That's a pretty logical assumption. Unfortunately I didn't find anything about it yet.
dbenham wrote:It works great on my work machine where REG has been blocked
Thats good news
dbenham wrote:What does "Admin group=Yes" mean
Actually it means that you belong to the local administrator group. No idea what your system admins did to restrict the permissions of that group. At least I hoped it would be an indicator if you would be able to gain elevated rights. Now it doesn't seem we could rely on it
Steffen
Re: Creating a script to gather PC information - to assist those asking for help
I really like Sponge Belly's suggestion to include info on the AutoRun setting
It is typically undefined, but when it is defined, it can really wreak havoc with FOR /F results.
I recommend gathering AutoRun info by redirecting output of REG QUERY and/or WMIC to a temp file, and then reading the result with SET /P, thus avoiding problems with FOR /F if AutoRun happens to be set to something problematic.
Another good thing to report on is %COMSPEC%, as pipes are dependent on it.
Dave Benham
Code: Select all
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
It is typically undefined, but when it is defined, it can really wreak havoc with FOR /F results.
I recommend gathering AutoRun info by redirecting output of REG QUERY and/or WMIC to a temp file, and then reading the result with SET /P, thus avoiding problems with FOR /F if AutoRun happens to be set to something problematic.
Another good thing to report on is %COMSPEC%, as pipes are dependent on it.
Dave Benham
Re: Creating a script to gather PC information - to assist those asking for help
Thanks Dave!
That was definitely something I didn't think about yet.
Steffen
That was definitely something I didn't think about yet.
Steffen
Re: Creating a script to gather PC information - to assist those asking for help
I did the changes
viewtopic.php?f=3&t=7347&p=48700#p48700
Dave
I wasn't able to find something that would explain the font failure. Could you do me a favour: Please have a look into your registry. Is there any subkey in HKCU\Console with a different FaceName, FontFamily, or FontSize value that could have caused it?
Steffen
viewtopic.php?f=3&t=7347&p=48700#p48700
Code: Select all
--------------------------------------------------------------------------------
Windows version : Microsoft Windows [Version 10.0.10586]
Product name : Windows 10 Home, 32 bit
Performance indicators : Processor Cores: 4 Visible RAM: 2023612 kilobytes
Date/Time format : (dd/mm/yy) 08.09.2016 0:06:37,12
ComSpec : C:\WINDOWS\system32\cmd.exe
Extensions : system: Enabled user: Enabled
Delayed expansion : system: Disabled user: Disabled
Locale name : de-DE Code Pages: OEM 850 ANSI 1252
DIR format : 04.09.2016 16:45 738.197.504 pagefile.sys
Permissions : Elevated Admin=No, Admin group=Yes
User AutoRun found : AutoRun REG_SZ rem "hello"
Dave
I wasn't able to find something that would explain the font failure. Could you do me a favour: Please have a look into your registry. Is there any subkey in HKCU\Console with a different FaceName, FontFamily, or FontSize value that could have caused it?
Steffen
Re: Creating a script to gather PC information - to assist those asking for help
The problem occurs with the following command:
Very odd. There seems to be some incompatibility with the new Win 10 Console.
When looking at the Console properties window, Options Tab, I have the "Use legacy console" option unchecked so that I can use new features like ANSI escape sequences, and [Ctrl-V] paste, etc.
Normally my code page is 437, and my console is using a raster font.
When I issue CHCP 1252, all hell breaks loose. The font changes to Courier New, and the text is tiny. CHCP 437 does not reset the console font back to a raster font.
If I activate the "Use legacy console" option, close the console, and then open a new one, then all is good. I can change the code page with CHCP at will with no ill effects. The console font remains a raster font. But now I cannot use the new console features
Dave Benham
Code: Select all
CHCP 1252
When looking at the Console properties window, Options Tab, I have the "Use legacy console" option unchecked so that I can use new features like ANSI escape sequences, and [Ctrl-V] paste, etc.
Normally my code page is 437, and my console is using a raster font.
When I issue CHCP 1252, all hell breaks loose. The font changes to Courier New, and the text is tiny. CHCP 437 does not reset the console font back to a raster font.
If I activate the "Use legacy console" option, close the console, and then open a new one, then all is good. I can change the code page with CHCP at will with no ill effects. The console font remains a raster font. But now I cannot use the new console features
Dave Benham
Re: Creating a script to gather PC information - to assist those asking for help
Thanks Dave!
The "Use legacy console" option is unchecked at my laptop too. A friend of mine has a 64 bit Win 10. I'll ask him to test it.
FWIW Did you run sfc /scannow in order to check if there was anything corrupted?
Steffen
The "Use legacy console" option is unchecked at my laptop too. A friend of mine has a 64 bit Win 10. I'll ask him to test it.
FWIW Did you run sfc /scannow in order to check if there was anything corrupted?
Steffen
Re: Creating a script to gather PC information - to assist those asking for help
No, I have not.
But I believe the problem stems from my use of a raster font. MS recommends that raster font not be used on the grounds that it may be hard to read on a high DPI screen. I personally find the reverse to be true. But I wonder if there is a deeper reason to not use raster font, and perhaps the switch to a non-raster font is a "feature" of the new console.
If I set my font to something like Courier New or Lucida Console, and set the size to something I can read, then all is fine when I use your utility.
Dave Benham
But I believe the problem stems from my use of a raster font. MS recommends that raster font not be used on the grounds that it may be hard to read on a high DPI screen. I personally find the reverse to be true. But I wonder if there is a deeper reason to not use raster font, and perhaps the switch to a non-raster font is a "feature" of the new console.
If I set my font to something like Courier New or Lucida Console, and set the size to something I can read, then all is fine when I use your utility.
Dave Benham
Re: Creating a script to gather PC information - to assist those asking for help
I have some more suggestions:
Display %PATHEXT% value. Problems can occur if the order is changed, or if key values are missing. I think most of us know that there are default values (hidden) if the value is undefined. But I only recently learned that if it is undefined, and you launch a new CMD session with cmd.exe, then the new session will have PATHEXT defined with the default values. On my machine the default is PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC
You define SYS32 as %systemroot%\System32. I see a few potential problems with that:
I believe you should use %__APPDIR__% instead, for the following reasons:
I think it would be a good idea to show the value of %__APPDIR__%. It could be useful to compare to the value of %COMSPEC%.
It would be nice to report if there are any standard external commands that are overriden because there are folders within PATH that contain non-standard EXE, BAT etc. files with the same base name as standard external commands.
I have written the following to probe for this, but they may be too slow to incorporate into the main script. Perhaps they can be companion scripts:
FastTestOverride.bat - Only tests commands that are listed by HELP
TestOverride.bat - Tests all EXE and COM files within %__APPDIR__% (quite slow)
Each file tested is briefly displayed on the screen. Only failures remain on the screen. I found 4 surprises on my work machine
FastTestOverride.bat
TestOverride.bat
Dave Benham
Display %PATHEXT% value. Problems can occur if the order is changed, or if key values are missing. I think most of us know that there are default values (hidden) if the value is undefined. But I only recently learned that if it is undefined, and you launch a new CMD session with cmd.exe, then the new session will have PATHEXT defined with the default values. On my machine the default is PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.JS;.WS;.MSC
You define SYS32 as %systemroot%\System32. I see a few potential problems with that:
- The SYSTEMROOT variable may be undefined, or improperly defined
- You assume you want the System32 subdirectory
I believe you should use %__APPDIR__% instead, for the following reasons:
- It directly gives the value you are looking for (C:\WINDOWS\System32\ on my machine)
- It cannot be overriden (except on XP). Even if a user defines SET __APPDIR__=SomeInvalidValue, then all versions (post XP) still expand %__APPDIR__% with the correct value - the user defined value is ignored. See StackOverflow: Why can't I access a variable named __CD__ on Windows 7? for more info.
I think it would be a good idea to show the value of %__APPDIR__%. It could be useful to compare to the value of %COMSPEC%.
It would be nice to report if there are any standard external commands that are overriden because there are folders within PATH that contain non-standard EXE, BAT etc. files with the same base name as standard external commands.
I have written the following to probe for this, but they may be too slow to incorporate into the main script. Perhaps they can be companion scripts:
FastTestOverride.bat - Only tests commands that are listed by HELP
TestOverride.bat - Tests all EXE and COM files within %__APPDIR__% (quite slow)
Each file tested is briefly displayed on the screen. Only failures remain on the screen. I found 4 surprises on my work machine
FastTestOverride.bat
Code: Select all
@echo off
if "%~1" equ "__:TestOverride__" (
if not defined pathext set "pathExt=.com;.exe;.bat;.cmd"
goto :TestOverride
)
call :TestOverride
exit /b
:TestOverride
setlocal disableDelayedExpansion
if not defined pathext (
"%__APPDIR__%cmd.exe" /c "%~f0" __:TestOverride__
exit /b
)
:: Define LF to contain a new line (0x0A) character
(set LF=^
%= Do not remove or alter this line =%
)
:: Prepare the list of paths in PATH
set "list=.\;%path:"=""%"
set "list=%list:^=^^%"
set "list=%list:&=^&%"
set "list=%list:|=^|%"
set "list=%list:<=^<%"
set "list=%list:>=^>%"
set "list=%list:;=^;^;%"
set list=%list:""="%
set "list=%list:"=""Q%"
set "list=%list:;;="S"S%"
set "list=%list:^;^;=;%"
set "list=%list:""="%"
setlocal EnableDelayedExpansion
set "list=!list:"Q=!"
for %%N in ("!LF!") do set "list="!list:"S"S=.\"%%~N"!""
setlocal disableDelayedExpansion
for /f %%C in ('copy /z "%~dpf0" nul') do (
for /f %%A in (
'^""%__APPDIR__%help.exe" ^| "%__APPDIR__%findstr.exe" /rc:"^[^ ][^ ]* "^"'
) do for /f "delims=" %%F in ('dir /b "%__APPDIR__%%%A.exe" "%__APPDIR__%%%A.com" 2^>nul') do (
<nul set /p "=.%%C %%C%%F"
set "skip="
setlocal enableDelayedExpansion
for /f "delims=" %%P in ("!list!") do if not defined skip (
if "!!" equ "" endlocal
for %%X in (%pathext%) do if not defined skip (
if exist "%%~fP%%~nF%%X" (
if /i "%%~fF" neq "%%~dpP%%~nF%%X" echo is overridden by "%%~dpP%%~nF%%X"
set "skip=1"
)
)
if /i "%%~dpF" equ "%%~dpP" set "skip=1"
)
)
(echo(%%C )
)
exit /b
TestOverride.bat
Code: Select all
@echo off
if "%~1" equ "__:TestOverride__" (
if not defined pathext set "pathExt=.com;.exe;.bat;.cmd"
goto :TestOverride
)
call :TestOverride
exit /b
:TestOverride
setlocal disableDelayedExpansion
if not defined pathext (
"%__APPDIR__%cmd.exe" /c "%~f0" __:TestOverride__
exit /b
)
:: Define LF to contain a new line (0x0A) character
(set LF=^
%= Do not remove or alter this line =%
)
:: Prepare the list of paths in PATH
set "list=.\;%path:"=""%"
set "list=%list:^=^^%"
set "list=%list:&=^&%"
set "list=%list:|=^|%"
set "list=%list:<=^<%"
set "list=%list:>=^>%"
set "list=%list:;=^;^;%"
set list=%list:""="%
set "list=%list:"=""Q%"
set "list=%list:;;="S"S%"
set "list=%list:^;^;=;%"
set "list=%list:""="%"
setlocal EnableDelayedExpansion
set "list=!list:"Q=!"
for %%N in ("!LF!") do set "list="!list:"S"S=.\"%%~N"!""
setlocal disableDelayedExpansion
for /f %%C in ('copy /z "%~dpf0" nul') do (
for %%F in (
"%__APPDIR__%*.exe"
"%__APPDIR__%*.com"
) do (
<nul set /p "=.%%C %%C%%F"
set "skip="
setlocal enableDelayedExpansion
for /f "delims=" %%P in ("!list!") do if not defined skip (
if "!!" equ "" endlocal
for %%X in (%pathext%) do if not defined skip (
if exist "%%~fP%%~nF%%X" (
if /i "%%~fF" neq "%%~dpP%%~nF%%X" echo is overridden by "%%~dpP%%~nF%%X"
set "skip=1"
)
)
if /i "%%~dpF" equ "%%~dpP" set "skip=1"
)
)
(echo(%%C )
)
exit /b
Dave Benham
-
- Posts: 128
- Joined: 23 May 2016 15:39
- Location: Spain
Re: Creating a script to gather PC information - to assist those asking for help
dbenham wrote:Yea
It works great on my work machine where REG has been blockedCode: Select all
--------------------------------------------------------------------------------
Windows version : Microsoft Windows [Version 6.1.7601]
Product name : Windows 7 Enterprise, 32 bit
Performance indicators : Processor Cores: 4 Visible RAM: 3659820 kilobytes
Date/Time format : mm/dd/yy (12 hours) 09/06/2016 9:48:04.50
Extensions : system: Enabled user: Enabled
Delayed expansion : system: Disabled user: Disabled
Locale name : en-US Code Pages: OEM 437 ANSI 1252
DIR format : 08/24/2016 06:07 PM 3,747,655,680 pagefile.sys
Permissions : Elevated Admin=No, Admin group=Yes
What does "Admin group=Yes" mean I am surprised to see that result given that configuration of my machine is completely locked down.
I cannot do any of the following
- install software
- change the date or time
- I'm not sure, but I don't think I can open command prompt as administrator. The Window opens, but the title does not indicate admin mode.
Dave Benham
Steffen, as Dave has found, there's a typo on line 86, where there is
Code: Select all
if defined whoami 2>nul %whoami% /groups|>nul %findstr% /i "\<S-1-5-32-544\>" && set "LocalAdmin=Yes" || set "LocalAdmin=Yes"
Code: Select all
if defined whoami 2>nul %whoami% /groups|>nul %findstr% /i "\<S-1-5-32-544\>" && set "LocalAdmin=Yes" || set "LocalAdmin=No"
This is what I get on my win 8 enterprise laptop
as administratorCode: Select all
--------------------------------------------------------------------------------
Windows version : Microsoft Windows [Versi¢n 6.2.9200]
Product name : Windows 8 Enterprise, 64 bit
Performance indicators : Processor Cores: 4 Visible RAM: 8298772 kilobytes
Date/Time format : (dd/mm/yy) 08/09/2016 17:57:42,09
ComSpec : C:\Windows\system32\cmd.exe
Extensions : system: Enabled user: Enabled
Delayed expansion : system: Disabled user: Disabled
Locale name : es-ES Code Pages: OEM 850 ANSI 1252
DIR format : 08/09/2016 12:03 8.485.076.992 pagefile.sys
Permissions : Elevated Admin=Yes, Admin group=Yes
Missing from the tool collection: debug
as userCode: Select all
--------------------------------------------------------------------------------
Windows version : Microsoft Windows [Versi¢n 6.2.9200]
Product name : Windows 8 Enterprise, 64 bit
Performance indicators : Processor Cores: 4 Visible RAM: 8298772 kilobytes
Date/Time format : (dd/mm/yy) 08/09/2016 17:58:25,06
ComSpec : C:\Windows\system32\cmd.exe
Extensions : system: Enabled user: Enabled
Delayed expansion : system: Disabled user: Disabled
Locale name : es-ES Code Pages: OEM 850 ANSI 1252
DIR format : 08/09/2016 12:03 8.485.076.992 pagefile.sys
Permissions : Elevated Admin=No, Admin group=Nope
Missing from the tool collection: debug
And on a win 2008R2 server
as administratorCode: Select all
--------------------------------------------------------------------------------
Windows version : Microsoft Windows [Versi¢n 6.1.7601]
Product name : Windows Server 2008 R2 Standard, 64 bit
Performance indicators : Processor Cores: 8 Visible RAM: 14677960 kilobytes
Date/Time format : (dd/mm/yy) 08/09/2016 18:08:58,69
ComSpec : C:\Windows\system32\cmd.exe
Extensions : system: Enabled user: Enabled
Delayed expansion : system: Disabled user: Disabled
Locale name : es-ES Code Pages: OEM 850 ANSI 1252
DIR format : 05/09/2016 02:02 15.030.231.040 pagefile.sys
Permissions : Elevated Admin=Yes, Admin group=Yes
Missing from the tool collection: debug
as userCode: Select all
--------------------------------------------------------------------------------
Windows version : Microsoft Windows [Versi¢n 6.1.7601]
Product name : Windows Server 2008 R2 Standard, 64 bit
Performance indicators : Processor Cores: 8 Visible RAM: 14677960 kilobytes
Date/Time format : (dd/mm/yy) 08/09/2016 18:12:45,34
ComSpec : C:\Windows\system32\cmd.exe
Extensions : system: Enabled user: Enabled
Delayed expansion : system: Disabled user: Disabled
Locale name : es-ES Code Pages: OEM 850 ANSI 1252
DIR format : 05/09/2016 02:02 15.030.231.040 pagefile.sys
Permissions : Elevated Admin=No, Admin group=Nope
Missing from the tool collection: debug
Codepages may produce weird characters when language special chars are used, here Versi¢n should be Versión.
I know there is a senseless work, but if someone with locale "xx-ES" would like to take care of accents
changeCode: Select all
:: create the information file and send the information to the clipboard if clip is available
>>"%temp%\info.txt" (
for /f "delims=" %%a in ('ver') do echo Windows version : %%a
setlocal EnableDelayedExpansion
echo Product name : !ProductName!, !bit! bit
echo Performance indicators : Processor Cores: !NUMBER_OF_PROCESSORS! Visible RAM: !ram! kilobytes&echo(
to something likeCode: Select all
:: create the information file and send the information to the clipboard if clip is available
>>"%temp%\info.txt" (
for /f "delims=" %%a in ('ver') do set "token=%%a"
setlocal EnableDelayedExpansion
echo !LocaleName! | find /I "-ES">nul && call :subst_spanish_acentos token
echo Windows version : !token!
echo Product name : !ProductName!, !bit! bit
echo Performance indicators : Processor Cores: !NUMBER_OF_PROCESSORS! Visible RAM: !ram! kilobytes&echo(
and add a new sub routineCode: Select all
:subst_spanish_acentos
set "token=!%1!"
set "token=!token: =á!"
set "token=!token:‚=é!"
set "token=!token:¡=í!"
set "token=!token:¢=ó!"
set "token=!token:£=ú!"
set "token=!token:¤=ñ!"
set "token=!token:¥=Ñ!"
set "%~1=%token%"
goto :eof
Now the output isCode: Select all
--------------------------------------------------------------------------------
Windows version : Microsoft Windows [Versión 6.2.9200]
Product name : Windows 8 Enterprise, 64 bit
Performance indicators : Processor Cores: 4 Visible RAM: 8298772 kilobytes
Date/Time format : (dd/mm/yy) 08/09/2016 17:58:45,31
ComSpec : C:\Windows\system32\cmd.exe
Extensions : system: Enabled user: Enabled
Delayed expansion : system: Disabled user: Disabled
Locale name : es-ES Code Pages: OEM 850 ANSI 1252
DIR format : 08/09/2016 12:03 8.485.076.992 pagefile.sys
Permissions : Elevated Admin=Yes, Admin group=Yes
Missing from the tool collection: debug
-
- Posts: 75
- Joined: 01 Jun 2016 09:25
Re: Creating a script to gather PC information - to assist those asking for help
douglas.swehla wrote:Code: Select all
--------------------------------------------------------------------------------
Windows version : Microsoft Windows [Version 6.1.7601]
Product name : Windows 7 Professional, 64 bit
Performance indicators : Processor Cores: 4 Visible RAM: 4072532 kilobytes
Date/Time format : mm/dd/yy (12 hours) Wed 08/31/2016 11:14:26.87
Extensions : system: Enabled user: Enabled
Delayed expansion : system: Disabled user: Disabled
Locale name : en-US Code Pages: OEM 437 ANSI 1252
DIR format : 08/29/2016 09:46 AM 4,170,272,768 pagefile.sys
Permissions : Elevated Admin=No, Admin group=Yes
Missing from the tool collection: debug
I am able to use delayed expansion, so not sure what's up with that. When I have more time, I'll step through the code to see what's going on.
I've noticed that all the results posted so far report that delayed expansion is disabled for both the system and the user. That seems unlikely, and I think it's because the test is backwards.
The current code starts off assuming that delayed expansion is disabled, and only changes it if it finds an enabling registry entry. My system doesn't have a registry entry for delayed expansion, and it still works, so I assume that it's enabled by default, and has to be turned off. The code should reflect that by starting off %du% and %ds% as Enabled, and only change to Disabled if a disabling entry is found.
For users that, for whatever reason, can't use REG or WMIC, you can test the user's ability directly with something like this:
Code: Select all
set "du=Enabled"
setlocal EnableDelayedExpansion
if not "%du%" equ "!du!" set "du=Disabled"
(endlocal & set "du=%du%")
Current script code, for reference:
Code: Select all
:::::: Starts at line line 114 in version 09/07/2016. ::::::
:: Extensions and DelayedExpansion
for %%a in (es eu ds du) do set "%%a=Disabled"
if %RegUserCMDproc%==1 (call :RegUserProc) else if defined wmic call :WmiUserProc
if %RegSysCMDproc%==1 (call :RegSysProc) else if defined wmic call :WmiSysProc
if not defined eu set "eu=%ex_noreg%"
if not defined du set "du=%de_noreg%"
:::::: Starts at line 270 in version 09/07/2016. ::::::
:RegUserProc
%reg% query "HKCU\%CMDproc%" /v "EnableExtensions" 2>nul|%find% "0x1">nul && set "eu=Enabled "
%reg% query "HKCU\%CMDproc%" /v "DelayedExpansion" 2>nul|%find% "0x1">nul && set "du=Enabled "
goto :eof
:WmiUserProc
%RegHead% GetDWORDValue hDefKey^="&H%HKCU%" sSubKeyName^="%CMDproc%" sValueName^="EnableExtensions" %RegTail%
if "%dat%"=="1" set "eu=Enabled "
%RegHead% GetDWORDValue hDefKey^="&H%HKCU%" sSubKeyName^="%CMDproc%" sValueName^="DelayedExpansion" %RegTail%
if "%dat%"=="1" set "du=Enabled "
goto :eof
:RegSysProc
%reg% query "HKLM\%CMDproc%" /v "EnableExtensions" 2>nul|%find% "0x1">nul && set "es=Enabled "
%reg% query "HKLM\%CMDproc%" /v "DelayedExpansion" 2>nul|%find% "0x1">nul && set "ds=Enabled "
goto :eof
:WmiSysProc
%RegHead% GetDWORDValue hDefKey^="&H%HKLM%" sSubKeyName^="%CMDproc%" sValueName^="EnableExtensions" %RegTail%
if "%dat%"=="1" set "es=Enabled "
%RegHead% GetDWORDValue hDefKey^="&H%HKLM%" sSubKeyName^="%CMDproc%" sValueName^="DelayedExpansion" %RegTail%
if "%dat%"=="1" set "ds=Enabled "
goto :eof