您好我有2个批处理文件,它在一台机器上运行完美,但在另一台机器上运行不太完美。
这是代码。
set /p "ln=" <"C:\LoginSystem\userl.txt"
set "%ln:&="&set "%"
set realuser=%user:"=%
echo %realuser%
所以在我的机器上它显示如下:
echo Liam Liam
在另一台机器上它显示如下:
echo "= "=
这是完全相同的机器唯一不同的是一个运行Windows 8(工作)和其他Windows 7(“=)
编辑:
谢谢大家的答案,我设法通过编辑生成userl.txt文件的方式来解决这个问题,使其只显示名称,例如“Liam”没有引号。然后使用此
set / p user =这似乎适用于我需要的东西,只有1个值会出现在该文件中。
谢谢大家!
答案 0 :(得分:1)
简单的echo %thisvariabledoesnoexist:"=%
会显示相同的结果。
观察输出的原因是变量%user%
似乎必须在set "%ln:&="&set "%"
行中赋值,但没有得到任何值。
问题可能是输入行不包含所需的值,或者输入行的格式与预期的格式不同。
答案 1 :(得分:0)
正如MC ND指出的那样,关键点是必须定义变量user
才能正常工作。如果未定义,则会得到问题结果。
我没有看到在具有相同批处理脚本的两台计算机上处理相同的user1.txt文件可能会给出不同的结果。
罢工,我可以想到一种方式,但这是一个长镜头。假设前两行应该定义user
变量,可能还有其他变量。但是假设前两行没有在任何一台机器上定义user
变量。也许user
已在脚本运行之前“工作”的机器上定义,并且未在另一台机器上定义。这是我能想出的唯一可以产生你描述的结果的东西。
我确实在您的代码中看到了一件令我担忧的事情。以下代码行表示有时您会在输入中获得引号。
set realuser=%user:"=%
您声明您的值中的引号会发生干扰,因此请将其删除。但是你太迟了!如果ln
的值中有引号,则前一行可能无法正确设置所有值。
尝试以下方法:
set /p "ln=" <"C:\LoginSystem\userl.txt"
set "ln=%ln:"=%"
set "%ln:&="&set "%"
echo %user%