Batch file 在变量中使用%username%无效

Batch file 在变量中使用%username%无效,batch-file,path,Batch File,Path,我有一个批处理“Shell”,它加载包含一行代码的文件,然后执行该行。但是我遇到了这行代码的问题:dir C:\Users\%username%\Desktop\WellOS2\Programdata它查找的是%username%,而不是我的用户名。当我把它改成我的用户名时,我发现了这一点 节目: @set /p build=<"C:\Users\%username%\Desktop\WellOS2\WellOS\Build".txt @title WellOS V.%build% got

我有一个批处理“Shell”,它加载包含一行代码的文件,然后执行该行。但是我遇到了这行代码的问题:
dir C:\Users\%username%\Desktop\WellOS2\Programdata
它查找的是%username%,而不是我的用户名。当我把它改成我的用户名时,我发现了这一点

节目:

@set /p build=<"C:\Users\%username%\Desktop\WellOS2\WellOS\Build".txt
@title WellOS V.%build%
goto boot
:register
cls
echo You are registering...
echo If this is an error press CTRL + C NOW...
pause
cls
set /p user= Enter your username: 
set /p passwordreg= Enter your password: 
mkdir "C:\Users\%username%\Desktop\WellOS2\Users\%user%"
mkdir "C:\Users\%username%\Desktop\WellOS2\Users\%user%\Documents"
echo %passwordreg% >"C:\Users\%username%\Desktop\WellOS2\Users\%user%\password".txt
echo 2 >"C:\Users\%username%\Desktop\WellOS2\OSfiles\bootset".txt
echo Your done.
pause
goto welloslog
:booterror
echo Sorry the boot file has an error. Check the user manual for BOOT$
pause
:boot
set /p boot=<"C:\Users\%username%\Desktop\WellOS2\OSfiles\bootset".txt
if %boot% == 1 goto register
if %boot% == 2 goto welloslog
goto booterror
cls
:ERROR
cls
echo ----------ERROR-------------------
echo %error%
pause
goto %back%
:welloslog
cls
echo Welcome to WellOS2!
echo ----------------LOGIN-------------
set /p user= Username: 
if exist "C:\Users\%username%\Desktop\WellOS2\Users\%user%" goto pass
set error= Sorry that account doesn't exist.
set back=welloslog
welloslogerror
:pass
set /p password=<"C:\Users\%username%\Desktop\WellOS2\Users\%user%\password".txt
set /p passwordlog= Password: 
if /i %passwordlog% == %password% goto wellos
set error= Sorry! wrong password.
set back= welloslog
goto error
:wellos
cls
:wellosnocls
echo --------------MAIN---------------
echo type help.sys for help
set /p command= #: 
if exist "C:\Users\%username%\Desktop\WellOS2\Programdata\%command%" goto po
set error= Unreconized program/command.
set back=wellos
goto error
:po
set lines=0
echo --------------%command%---------------
:porep
set /a lines=%lines% + 1
set /p "code="<"C:\Users\%username%\Desktop\WellOS2\Programdata\%command%\%command%-%lines%".wellcode
%code%
goto porep
dirc:\Users\%username%\Desktop\WellOS2\programmadata

goto wellosnocls

GOWELL
(这是程序生成器结束代码的命令)

节目开场白:

@set /p build=<"C:\Users\%username%\Desktop\WellOS2\WellOS\Build".txt
@title WellOS V.%build%
goto boot
:register
cls
echo You are registering...
echo If this is an error press CTRL + C NOW...
pause
cls
set /p user= Enter your username: 
set /p passwordreg= Enter your password: 
mkdir "C:\Users\%username%\Desktop\WellOS2\Users\%user%"
mkdir "C:\Users\%username%\Desktop\WellOS2\Users\%user%\Documents"
echo %passwordreg% >"C:\Users\%username%\Desktop\WellOS2\Users\%user%\password".txt
echo 2 >"C:\Users\%username%\Desktop\WellOS2\OSfiles\bootset".txt
echo Your done.
pause
goto welloslog
:booterror
echo Sorry the boot file has an error. Check the user manual for BOOT$
pause
:boot
set /p boot=<"C:\Users\%username%\Desktop\WellOS2\OSfiles\bootset".txt
if %boot% == 1 goto register
if %boot% == 2 goto welloslog
goto booterror
cls
:ERROR
cls
echo ----------ERROR-------------------
echo %error%
pause
goto %back%
:welloslog
cls
echo Welcome to WellOS2!
echo ----------------LOGIN-------------
set /p user= Username: 
if exist "C:\Users\%username%\Desktop\WellOS2\Users\%user%" goto pass
set error= Sorry that account doesn't exist.
set back=welloslog
welloslogerror
:pass
set /p password=<"C:\Users\%username%\Desktop\WellOS2\Users\%user%\password".txt
set /p passwordlog= Password: 
if /i %passwordlog% == %password% goto wellos
set error= Sorry! wrong password.
set back= welloslog
goto error
:wellos
cls
:wellosnocls
echo --------------MAIN---------------
echo type help.sys for help
set /p command= #: 
if exist "C:\Users\%username%\Desktop\WellOS2\Programdata\%command%" goto po
set error= Unreconized program/command.
set back=wellos
goto error
:po
set lines=0
echo --------------%command%---------------
:porep
set /a lines=%lines% + 1
set /p "code="<"C:\Users\%username%\Desktop\WellOS2\Programdata\%command%\%command%-%lines%".wellcode
%code%
goto porep
:采购订单

设置行数=0

echo----------------%command%-----------------

:porep

set/a行=%lines%+1

set/p“code=”“C:\Users\%username%\Desktop\WellOS2\OSfiles\bootset.txt
回音你的声音完成了。
暂停
戈托韦洛斯洛酒店
:引导错误
很抱歉,启动文件有错误。检查用户手册中的引导$
暂停
:开机

set/p boot=如果您使用
set/p
运行代码并重定向输入
如果您使用
set/p
运行代码并重定向输入
而没有看到整个代码(要包括它,不要将其添加到注释中),这只是一个猜测,但通常只有在变量不存在时才会看到该行为。由于
%username%
是一个环境变量,因此它应该始终存在,除非您的代码中有
set username=
语句。@操作系统代码或程序代码中的某些内容?无论哪个包含给您带来麻烦的代码行。(此外,我们中更迂腐的人会指出,你不是在制作操作系统,而是在制作外壳。)我建议使用
%USERPROFILE%\Desktop\WellOS2\programmadata
。为什么使用引号?用户名(帐户名)可以包含空格字符或其他需要双引号的字符。为什么使用环境变量USERPROFILE?如果用户帐户的profiles目录不在驱动器C上,它也可以工作:对于所有或只是一些帐户,对于Windows 2000/XP和任何更高版本的独立于操作系统语言的Windows。@SomethingDark已更新。在没有看到全部代码的情况下(要包含它,请不要在注释中添加),这只是一个猜测,但通常只有当变量不存在时,才会看到这种行为。由于
%username%
是一个环境变量,因此它应该始终存在,除非您的代码中有
set username=
语句。@操作系统代码或程序代码中的某些内容?无论哪个包含给您带来麻烦的代码行。(此外,我们中更迂腐的人会指出,你不是在制作操作系统,而是在制作外壳。)我建议使用
%USERPROFILE%\Desktop\WellOS2\programmadata
。为什么使用引号?用户名(帐户名)可以包含空格字符或其他需要双引号的字符。为什么使用环境变量USERPROFILE?如果用户帐户的配置文件目录不在驱动器C上,它也可以工作:对于所有或只是一些帐户,对于Windows 2000/XP和任何更高版本的独立于操作系统语言的Windows。@SomethingDark已更新。