【发布时间】:2015-11-25 23:54:22
【问题描述】:
我有一个批处理“Shell”,它加载包含一行代码的文件,然后执行该行。但是我在使用这行代码时遇到了问题:dir C:\Users\%username%\Desktop\WellOS2\Programdata 它查找 %username% 而不是我的用户名。当我将其更改为我的用户名时,我发现了这一点。
程序:
dir C:\Users\%username%\Desktop\WellOS2\Programdata
goto wellosnocls
GOWELL(程序生成器命令结束代码)
项目开启者:
: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
整个外壳:
@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
【问题讨论】:
-
没有看到整个代码(edit your question 包含它,请不要在评论中添加它),这只是一个猜测,但您通常只会看到这种行为当变量不存在时。由于
%username%是一个环境变量,它应该始终存在,除非您的代码中某处有set username=语句。 -
@somethingdark 是操作系统代码还是程序代码?
-
哪个包含给您带来麻烦的代码行。 (另外,我们中比较迂腐的人会指出,您不是在制作操作系统,而是在制作外壳。)
-
我建议使用
"%USERPROFILE%\Desktop\WellOS2\Programdata"。为什么要使用引号?用户名(帐户名)可以包含空格字符或其他需要双引号的字符。为什么使用环境变量USERPROFILE?如果用户帐户的配置文件目录不在驱动器 C 上,那么它也可以工作:对于所有或只是一些帐户,也适用于 Windows 2000/XP 和任何更高版本的独立于操作系统语言的 Windows。 -
@SomethingDark 已更新。
标签: batch-file path