command retunrs no value even though entry exists

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Post Reply
Message
Author
Yanta
Posts: 45
Joined: 01 Sep 2019 07:08

command retunrs no value even though entry exists

#1 Post by Yanta » 09 Sep 2020 20:05

Recently I received some excellent support in reading a list of items from a text file and assigning the result to a variable.

However, it seems to be struggling with a single entry.

This is an abridged list of the games...

Code: Select all

Overwolf,D:\Program Files (x86)\Overwolf
Quake,I:\Program Files (x86)\Quake
AoE2DE,I:\Program Files (x86)\SteamLibrary2\steamapps\common\AoE2DE
Doom 64,I:\Program Files (x86)\SteamLibrary2\steamapps\common\Doom 64
Duke Nukem 3D,I:\Program Files (x86)\SteamLibrary2\steamapps\common\Duke Nukem 3D
GarrysMod,I:\Program Files (x86)\SteamLibrary2\steamapps\common\GarrysMod
Green Hell,I:\Program Files (x86)\SteamLibrary2\steamapps\common\Green Hell
Path of Exile,I:\Program Files (x86)\SteamLibrary2\steamapps\common\Path of Exile
We Went Back,I:\Program Files (x86)\SteamLibrary2\steamapps\common\We Went Back
Epic Games,D:\program files (x86)\Epic Games
Age2HD,E:\Program Files (x86)\Steam\steamapps\common\Age2HD
Counter-Strike Global Offensive,E:\Program Files (x86)\Steam\steamapps\common\Counter-Strike Global Offensive
dota 2 beta,E:\Program Files (x86)\Steam\steamapps\common\dota 2 beta
dota 2 test,E:\Program Files (x86)\Steam\steamapps\common\dota 2 test
Game Guru,E:\Program Files (x86)\Steam\steamapps\common\Game Guru
NBA 2K19,E:\Program Files (x86)\Steam\steamapps\common\NBA 2K19
PUBG,E:\Program Files (x86)\Steam\steamapps\common\PUBG
Rust,E:\Program Files (x86)\Steam\steamapps\common\Rust
Skyrim,E:\Program Files (x86)\Steam\steamapps\common\Skyrim
Skyrim Special Edition,E:\Program Files (x86)\Steam\steamapps\common\Skyrim Special Edition
Steamworks Shared,E:\Program Files (x86)\Steam\steamapps\common\Steamworks Shared
Underlords,E:\Program Files (x86)\Steam\steamapps\common\Underlords
Battle.net,D:\Program Files(x86)\Battle.net
Runescape,D:\Program Files\Jagex\RuneScape Launcher
The command to retrieve the folder name is;

Code: Select all

Echo Checking for Runescape
for /F "Usebackq Tokens=1* delims=," %%a in ("%SrcPath%\folders.txt") do IF /I "%%a"=="Runescape" set GamePath=%%b
IF "%GamePath%"=="" Echo Empty path returned for Runescape
For Runescape and only Runescape GamePath is always empty.

Grabbing at straws, I even moved the entry higher in the list with no success.
I checked - there is no space at the end of the for line as this would cause it to fail.

Why would it fail only on this entry?

Squashman
Expert
Posts: 4194
Joined: 23 Dec 2011 13:59

Re: command retunrs no value even though entry exists

#2 Post by Squashman » 09 Sep 2020 21:15

Should we assume the Source Path variable is defined correctly?

Regardless, I copied and pasted your input file and your code exactly and substituted my own source path and it works just fine.

Yanta
Posts: 45
Joined: 01 Sep 2019 07:08

Re: command retunrs no value even though entry exists

#3 Post by Yanta » 11 Sep 2020 00:13

Yes. I suspect if SrcPath was not defined the other 30 or so games would also have failed.

SrcPath is J:\PostInstall\Corey, see below...

Code: Select all

SET SRC=%CD:~0,2%
set SrcPath=%SRC%\PostInstall\%USERNAME%
set RegPath=%SRC%\PostInstall\%USERNAME%\Applications
I've run it dozens of times and it is null every single time. As I said - For this game and no other, regardless of where the entry is located within folders.txt.

From the log file

Code: Select all

17:00:27.39 Checking for Runescape 
17:00:27.39 NULL path returned for Runescape 
Which is written by....

Code: Select all

Echo %time% Checking for Runescape >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
for /F "Usebackq Tokens=1* delims=," %%a in ("%SrcPath%\folders.txt") do IF /I "%%a"=="Runescape" set GamePath=%%b
IF "%GamePath%"=="" Echo NULL path returned for Runescape
IF "%GamePath%"=="" Echo %time% NULL path returned for Runescape >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
For example, here is the log output for Valorant yesterday...

Code: Select all

17:05:10.97 Checking for Valorant 
17:05:10.99 Valorant folder exists at D:\Program Files (x86)\Valorant. Overwriting. 
Really annoying that you can't reproduce the error. So I added output of paths to script. It now looks like...

Code: Select all

IF "%GamePath%"=="" (
	Echo NULL path returned for Runescape
	Echo %time% NULL path returned for Runescape >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
	Echo %time% SrcPath is  %SrcPath% >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
	IF EXIST "%SrcPath%\" Echo %time% Source path exists >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
	IF EXIST "%SrcPath%\Folders.txt" Echo %time% Folders.txt exists >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
)
and output is now

Code: Select all

16:22:09.37 NULL Path returned for Runescape
16:22:09.37 SrcPath is J:\PostInstall\Corey
16:22.09:37 Source path exists
16:22.09:39 Folders.txt exists

OJBakker
Expert
Posts: 38
Joined: 12 Aug 2011 13:57

Re: command retunrs no value even though entry exists

#4 Post by OJBakker » 11 Sep 2020 03:12

Is seems there is something in you Folders.txt that is not visible in the lines you have posted.
You need to examine what is going on inside the for-loop to see why it fails on Runescape.
Add the following code to yout batchfile, run it and check the new file FolderDEBUG.txt

Code: Select all

"%SrcPath%\foldersDEBUG.txt" ( for /F "Usebackq Tokens=1* delims=," %%a in ("%SrcPath%\folders.txt") do @echo "compare [%%a] to [Runescape] path [%%b]")

miskox
Posts: 356
Joined: 28 Jun 2010 03:46

Re: command retunrs no value even though entry exists

#5 Post by miskox » 11 Sep 2020 05:27

Would it be possible if there is no CRLF at the end (after the last line) that it would fail (I tested it and it works even without CRLF at the end.).?

Saso

Yanta
Posts: 45
Joined: 01 Sep 2019 07:08

Re: command retunrs no value even though entry exists

#6 Post by Yanta » 13 Sep 2020 04:17

OJBakker wrote:
11 Sep 2020 03:12
Is seems there is something in you Folders.txt that is not visible in the lines you have posted.
You need to examine what is going on inside the for-loop to see why it fails on Runescape.
Add the following code to yout batchfile, run it and check the new file FolderDEBUG.txt

Code: Select all

"%SrcPath%\foldersDEBUG.txt" ( for /F "Usebackq Tokens=1* delims=," %%a in ("%SrcPath%\folders.txt") do @echo "compare [%%a] to [Runescape] path [%%b]")
Hey, thanks for that This is what is output...

Code: Select all

"compare [Runescape] to [Runescape] path [D:\Program Files\Jagex\RuneScape Launcher]"
Damn That looks like it got the path.

Ran

Code: Select all

for /F "Usebackq Tokens=1* delims=," %%a in ("%SrcPath%\folders.txt") do IF /I "%%a"=="Runescape" set GamePath=%%b
and it went back to null.

So I deleted the entire file and recreated it from scratch, 20 minutes later tried again and it seems to be working.... Go figure. The compare didn't pick anything up, but there must have been something dodgy with that line?

penpen
Expert
Posts: 1859
Joined: 23 Jun 2013 06:15
Location: Germany

Re: command retunrs no value even though entry exists

#7 Post by penpen » 13 Sep 2020 05:10

I suspect you initially used a code block (encapsulated in parentheses):

Code: Select all

(
Echo Checking for Runescape
for /F "Usebackq Tokens=1* delims=," %%a in ("%SrcPath%\folders.txt") do IF /I "%%a"=="Runescape" set GamePath=%%b
IF "%GamePath%"=="" Echo Empty path returned for Runescape
)

Yanta
Posts: 45
Joined: 01 Sep 2019 07:08

Re: command retunrs no value even though entry exists

#8 Post by Yanta » 14 Sep 2020 04:32

I still am..

Code: Select all

IF /I "%DoGame:~0,1%"=="Y" (
Game 1
Game 2
Runescape
Game 3
Game 4
etc
)
I compared the folders.old.txt with the new one I created and there was 1 byte difference in the file size, but they looked identical. (3610 vs 3609 bytes)

miskox
Posts: 356
Joined: 28 Jun 2010 03:46

Re: command retunrs no value even though entry exists

#9 Post by miskox » 14 Sep 2020 04:47

It would be great to see binary compare. Probably your string 'Runescape' had an extra space or somethig.

Saso

penpen
Expert
Posts: 1859
Joined: 23 Jun 2013 06:15
Location: Germany

Re: command retunrs no value even though entry exists

#10 Post by penpen » 14 Sep 2020 09:37

Yanta wrote:
14 Sep 2020 04:32
I still am..
If your old and new code both work from inside a compound statement and your old code doesn't work, but your new one does then i suspect your new code to use delayed expansion (!variable!), contrary to your old code where you used regular expansion (%variable%).

Yanta
Posts: 45
Joined: 01 Sep 2019 07:08

Re: command retunrs no value even though entry exists

#11 Post by Yanta » 17 Sep 2020 04:05

No, no, I didn't re-write any code at all.

When I said I "So I deleted the entire file and recreated it from scratch" I meant I recreated the folders.txt file.

There is no old code vs new code. The same code worked after recreating the folders.txt file, imho, reinforcing the earlier statement @ojbakker made 'There must be something invisible in the line..."

dir *. /s/b >folders.txt, then deleted all of the duplicate lines leaving only the parent folder for each game.

I don't use !variable! anywhere and delayed expansion is not enabled

penpen
Expert
Posts: 1859
Joined: 23 Jun 2013 06:15
Location: Germany

Re: command retunrs no value even though entry exists

#12 Post by penpen » 17 Sep 2020 12:35

The thing is, that a codeblock like the one i suspected above (and that you confirmed to use) can't work:

Code: Select all

(
Echo Checking for Runescape
for /F "Usebackq Tokens=1* delims=," %%a in ("%SrcPath%\folders.txt") do IF /I "%%a"=="Runescape" set GamePath=%%b
IF "%GamePath%"=="" Echo Empty path returned for Runescape
)
The reason is, that you can't access the actual content of an environment variable from within a compound statement using default (percentage) expansion. You only can access the value it had at the beginning of the compound statement.
If you want to access the actual content of a variable from within an compund statement, then you need to use delayed expansion; example:

Code: Select all

@echo off
set "var="
(
	set "var=value"

	if "%var%" == ""  echo %%var%% is empty
	echo %%var%%=%var%.

	setlocal enableDelayedExpansion
	if "!var!" == ""  echo ^^^!var^^^! is empty
	echo ^^^!var^^^!=!var!.
	endlocal
)
echo var=%var%
goto :eof
So it's confusing to hear that you are using a single compound statement for all games. Neither should work, if that's the code you have used.
(I initially suspected you have used the compound statement only for the game Runescape... .)


penpen

Yanta
Posts: 45
Joined: 01 Sep 2019 07:08

Re: command returns no value even though entry exists

#13 Post by Yanta » 17 Sep 2020 19:56

Here is what it looks like. There are over 120 games so I won't post the entire games section..
When I said I "Created the file fron scratch" not one line of this code was changed. I recreated the folders.txt file from scratch.
The only changes I've made recently are to add .exe to the end of those that did not have it, which I did yesterday based on other feedback.

Code: Select all

 IF /I "%DoGame:~0,1%"=="Y" (
        Echo Installing and Configuring Games
        Echo %time% Installing games and settings >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        IF /I NOT "%USERNAME%"=="Peyton" IF /I NOT "%USERNAME%"=="Corey" IF /I NOT "%USERNAME%"=="Corey-Kodi" IF /I NOT "%USERNAME%"=="Bedroom" (
            IF EXIST "%SRC%\PostInstall\W7GW10.exe" (
                Echo %time% Installing Windows 7 Games for Windows 10 >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
                Start /wait "Windows 7 Games" /d "%SRC%\PostInstall\" "W7GW10.exe"
            )
        )
        
        IF EXIST "%PROGRAMFILES%\Microsoft Games\" (
            REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\freecell.exe" /v NoStartPage /d 1 /t REG_DWORD /f >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\solitaire.exe" /v NoStartPage /d 1 /t REG_DWORD /f >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\mahjong.exe" /v NoStartPage /d 1 /t REG_DWORD /f >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\Hearts.exe" /v NoStartPage /d 1 /t REG_DWORD /f >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\spidersolitaire.exe" /v NoStartPage /d 1 /t REG_DWORD /f >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        )
        
Rem     BOS high scores
        Set GamePath=
        Echo %time% Checking for Balls of steel >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        for /F "Usebackq Tokens=1* delims=," %%a in ("%SrcPath%\folders.txt") do IF /I "%%a"=="Balls of Steel" set GamePath=%%b
        IF EXIST "%GamePath%\" IF NOT "%GamePath%"=="" IF EXIST "%RegPath%\bos.reg" (
            Echo %time% Balls of Steel >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            REG IMPORT "%RegPath%\bos.reg" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        )
        
Rem     Hoyle Card games (2004)
        IF EXIST "%SrcPath%\Hoyle\" (
            Echo %time% Hoyle card games >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            xcopy "%SrcPath%\Hoyle\*.*" "%APPDATA%\Hoyle" /e/q/y/c/k/i/h >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        )
        
Rem     PopCap games
        IF EXIST "%SrcPath%\PDPopCap Games\" (
            Echo %time% PopCap games >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            xcopy "%SrcPath%\PDPopCap Games" "%PROGRAMDATA%\PopCap Games" /e/q/y/c/k/i/h/x >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        )
        
        IF EXIST "%SrcPath%\LAPopCap Games\" (
            Echo %time% Local APPData PopCap games >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            xcopy "%SrcPath%\LAPopCap Games" "%LOCALAPPDATA%\PopCap Games" /e/q/y/c/k/i/h/x >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        )
        IF EXIST "%RegPath%\Peggle.reg" REG IMPORT "%RegPath%\Peggle.reg" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        IF EXIST "%RegPath%\Bejeweled3.reg" REG IMPORT "%RegPath%\Bejeweled3.reg" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        
Rem     Misc games      
        IF EXIST "%SrcPath%\Saved Games\" (
            Echo %time% Saved games folder >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            xcopy "%SrcPath%\Saved Games" "%USERPROFILE%\Saved Games" /e/q/y/c/k/i/h/x >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        )

Rem     Microsoft Games folder Some games go in local Eg W7G4W10, some go in roaming Eg Rise of nations
        IF EXIST "%SrcPath%\AD Microsoft Games\" (
            Echo %time% APPData Microsoft games >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            xcopy "%SrcPath%\AD Microsoft Games" "%APPDATA%\Microsoft Games" /e/q/y/c/k/i/h/x >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        )
        
        IF EXIST "%SrcPath%\Microsoft Games\" (
            Echo %time% Local APPData Microsoft games >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            xcopy "%SrcPath%\Microsoft Games" "%LOCALAPPDATA%\Microsoft Games" /e/q/y/c/k/i/h/x >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        )
        
Rem     Max Payne 2
        Set GamePath=
        Set D2Test=
        for /F "Usebackq Tokens=1* delims=," %%a in ("%SrcPath%\folders.txt") do IF /I "%%a"=="Max payne 2" set GamePath=%%b
        IF NOT "%GamePath%"=="" IF EXIST "%GamePath%\" IF EXIST "%SrcPath%\MaxPayne2\" IF EXIST "%RegPath%\MaxPayn2.reg" (
            Echo %time% Checking for Max Payne 2 Save games  >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            REG IMPORT "%RegPath%\MaxPayne2.reg" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            FOR /f "tokens=5*" %%a in ('REG QUERY "HKEY_CURRENT_USER\Software\Remedy Entertainment\Max Payne 2\Save Game" /v "Last Saved Game Filename"') do set D2Test=%%~dpb
            set D2Test=%D2Test:\\=\%
            IF NOT "%D2Test%"=="" IF NOT EXIST "%D2Test%\" xcopy "%SrcPath%\MaxPayne2" "%D2Test%" /e/q/y/c/k/i/h/x >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        )

Rem     Runescape.
        Set GamePath=
        Echo %time% Checking for Runescape >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        for /F "Usebackq Tokens=1* delims=," %%a in ("%SrcPath%\folders.txt") do IF /I "%%a"=="Runescape" set GamePath=%%b
        IF "%GamePath%"=="" Echo NULL path returned for Runescape
        IF "%GamePath%"=="" Echo %time% NULL path returned for Runescape >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        IF EXIST "%GamePath%\" Echo %time% Runescape already installed >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        IF NOT EXIST "%GamePath%\" IF NOT "%GamePath%"=="" EXIST "%SrcPath%\RuneScape-Setup.exe" (
            Echo Installing RuneScape. Make sure to install on "%GamePath%"
            Echo %time% Installing RuneScape >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            "%SrcPath%\RuneScape-Setup.exe"
        )
        IF EXIST "%RegPath%\Runescape.reg" REG IMPORT "%RegPath%\Runescape.reg" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        
        IF EXIST "%SrcPath%\Alt1Setup.exe" (
            Echo Installing ALT1 Toolkit
            Echo %time% Installing Alt1 Toolkit >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            "%SrcPath%\Alt1Setup.exe" /s
            IF EXIST "%SrcPath%\Alt1Toolkit\" (
                Echo %time% Copying ALT1 local files >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
                xcopy "%SrcPath%\Alt1Toolkit" "%LOCALAPPDATA%\Alt1Toolkit" /e/q/y/c/k/i/h/x >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            )
        )
    
Rem     Runescape settings
        IF EXIST "%SrcPath%\Jagex\" (
            xcopy "%SrcPath%\Jagex" "%LOCALAPPDATA%\Jagex" /e/q/y/c/k/i/h >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            IF EXIST "%RegPath%\jagex.reg" (
                REG IMPORT "%RegPath%\jagex.reg" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            )
        )
Rem     Runescape Java Cache
        IF EXIST "%SrcPath%\JagexCache\" (
            Echo %time% Copying Runescape Java Cache folder >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            xcopy "%SrcPath%\JagexCache" "%USERPROFILE%\JagexCache" /e/q/y/c/k/i/h >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            IF EXIST "%SrcPath%\jagex_cl_runescape_LIVE.dat" (
                copy "%SrcPath%\jagex_cl_runescape_LIVE.dat" "%USERPROFILE%" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            )
	 IF EXIST "%SrcPath%\jagex_cl_oldschool_LIVE.dat" (
                copy "%SrcPath%\jagex_cl_oldschool_LIVE.dat" "%USERPROFILE%" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            )
            IF EXIST "%SrcPath%\jagexappletviewer.preferences" (
                copy "%SrcPath%\jagexappletviewer.preferences" "%USERPROFILE%" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            )

        )
Rem     NXT Cache 27/07/2020        
        IF EXIST "%SrcPath%\PDJagex\" (
            Echo %time% Copying Runescape NXT cache >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            xcopy "%SrcPath%\PDJagex" "%PROGRAMDATA%\Jagex" /e/q/y/c/k/i/h >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
        )
        
Rem     Minecraft
        Set GamePath=
        for /F "Usebackq Tokens=1* delims=," %%a in ("%SrcPath%\folders.txt") do IF /I "%%a"=="Minecraft" set GamePath=%%b
        IF NOT "%GamePath%"=="" IF EXIST "%GamePath%\MinecraftLauncher.exe" (
            Echo %time% Copying minecraft config files >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            IF EXIST "%RegPath%\minecraft.reg" (
                REG IMPORT "%RegPath%\minecraft.reg" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            )
            IF EXIST "%SrcPath%\.Minecraft\" (
                xcopy "%SrcPath%\.Minecraft" "%APPDATA%\.Minecraft" /e/q/y/c/k/i/h >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
            )
        )
        Rem 	Golf Around
		Set GamePath=
		Echo %time% Checking for Golf Around >>C:\%USERDOMAIN%.Backup.Log 2>&1
		for /F "Usebackq Tokens=1* delims=," %%a in ("%UserPath%\folders.txt") do IF /I "%%a"=="Golf Around" set GamePath=%%b
		Echo %time% Path: '%GamePath%' >>C:\%USERDOMAIN%.Backup.Log 2>&1
		IF EXIST "%GamePath%\" IF NOT "%GamePath%"=="" (
			REG IMPORT "%RegPath%\GolfAround.reg" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
		)

Rem 	Fall Guys
		Set GamePath=
		Echo %time% Checking for Fall Guys >>C:\%USERDOMAIN%.Backup.Log 2>&1
		for /F "Usebackq Tokens=1* delims=," %%a in ("%UserPath%\folders.txt") do IF /I "%%a"=="Fall Guys" set GamePath=%%b
		Echo %time% Path: '%GamePath%' >>C:\%USERDOMAIN%.Backup.Log 2>&1
		IF EXIST "%GamePath%\" IF NOT "%GamePath%"=="" (
			REG IMPORT "%RegPath%\FallGuys.reg" >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
		)
Rem 	Ninja Kiwi Archive
		Set GamePath=
		Echo %time% Checking for Ninja Kiwi Archive >>C:\%USERDOMAIN%.Backup.Log 2>&1
		for /F "Usebackq Tokens=1* delims=," %%a in ("%UserPath%\folders.txt") do IF /I "%%a"=="Ninja Kiwi" set GamePath=%%b
		Echo %time% Path: '%GamePath%' >>C:\%USERDOMAIN%.Backup.Log 2>&1
		IF EXIST "%GamePath%\" IF NOT "%GamePath%"=="" (
			REG IMPORT "%RegPath%\NinjaKiwi.reg" >>C:\%USERDOMAIN%.Backup.Log 2>&1
		)

Rem 	7 Days to Die
		Set GamePath=
		Echo %time% Checking for 7 Days to Die >>C:\%USERDOMAIN%.Backup.Log 2>&1
		for /F "Usebackq Tokens=1* delims=," %%a in ("%UserPath%\folders.txt") do IF /I "%%a"=="7 Days to die" set GamePath=%%b
		Echo %time% Path: '%GamePath%' >>C:\%USERDOMAIN%.Backup.Log 2>&1
		IF EXIST "%GamePath%\" IF NOT "%GamePath%"=="" (
			REG IMPORT "%RegPath%\7Daystodie.reg" >>C:\%USERDOMAIN%.Backup.Log 2>&1
			IF EXIST "%SrcPath%\RA7Daystodie\" xcopy "%SrcPath%\RA7daystodie" "%APPDATA%\7Daystodie" /e/q/y/c/k/i/h >>C:\%USERDOMAIN%.PostInstall.Log 2>&1
		)
		
Rem 	Knight Online
		Set GamePath=
		Echo %time% Checking for Knight Online >>C:\%USERDOMAIN%.Backup.Log 2>&1
		for /F "Usebackq Tokens=1* delims=," %%a in ("%UserPath%\folders.txt") do IF /I "%%a"=="Knight Online" set GamePath=%%b
		Echo %time% Path: '%GamePath%' >>C:\%USERDOMAIN%.Backup.Log 2>&1
		IF EXIST "%GamePath%\" IF NOT "%GamePath%"=="" (
			REG IMPORT "%RegPath%\KnightOnline.reg" >>C:\%USERDOMAIN%.Backup.Log 2>&1
		)	
		
Rem 	Dota 2 beta
		Set GamePath=
		Echo %time% Checking for Dota 2 beta >>C:\%USERDOMAIN%.Backup.Log 2>&1
		for /F "Usebackq Tokens=1* delims=," %%a in ("%UserPath%\folders.txt") do IF /I "%%a"=="Dota 2 beta" set GamePath=%%b
		Echo %time% Path: '%GamePath%' >>C:\%USERDOMAIN%.Backup.Log 2>&1
		IF EXIST "%GamePath%\" IF NOT "%GamePath%"=="" (
			REG IMPORT "%RegPath%\KnightOnline.reg" >>C:\%USERDOMAIN%.Backup.Log 2>&1
		)
	)
	

penpen
Expert
Posts: 1859
Joined: 23 Jun 2013 06:15
Location: Germany

Re: command retunrs no value even though entry exists

#14 Post by penpen » 18 Sep 2020 05:48

Only flying over your source (i actually have few time, sorry).

I assume that prior to the if command the environment variable GamePath is undefined; you might want to check that by adding:

Code: Select all

echo("GamePath=%GamePath%"

IF /I "%DoGame:~0,1%"=="Y" (
:: ...
)

Based on that Gamepath is undefined:
Some of your routines seem to work well, because it seems they don't use variables defined within the compound-statement (for example sections "Hoyle Card games (2004)", "PopCap games", ...), while all that do (for example use GamePath) shouldn't work correct, because of the above mentioned reason (for example sections "BOS high scores", "Max Payne 2", "Runescape" ...).


penpen

Compo
Posts: 505
Joined: 21 Mar 2014 08:50

Re: command retunrs no value even though entry exists

#15 Post by Compo » 18 Sep 2020 11:05

The same variable expansion issue you have with `GamePath` is also evident in your 'Max Payne 2' section, with `D2Test`

Post Reply