我尝试创建一个允许您输入用户名和密码的程序,然后创建一个与输入的用户名同名的文件夹,然后在包含密码的文件夹中创建.txt文件。出于某种原因,我创建.txt文件的代码似乎不起作用。该文件完全为空,而不是包含密码。有没有人能解决我的问题?
这是我的代码:
set /p newun=New Username:
set /p newpw=New Password:
if not exist C:\ProgramData\---\%newun% (
mkdir C:\ProgramData\---\%newun%
%newpw% > C:\ProgramData\---\%newun%\%newun%pw.txt
) else (
echo %newun%'s directory already exists.
pause
goto start
)
答案 0 :(得分:2)
您忘了添加echo
。您的批次需要如下所示:
(echo !newpw!)> C:\ProgramData\---\%newun%\%newun%pw.txt
除此之外,你还需要......
setlocal EnableDelayedExpansion
...在您的批次顶部。
这和echo周围的(
/ )
以及保存密码的变量很重要,因为你的密码可能包含其他内容的字符(请参阅@dbenham的评论)。如果有人将>
,<
,&
和其他多个字符放入其密码中,则会破坏您的脚本,因为如果这成为批处理的一部分,其行为将会发生变化。
由您自行决定是否需要以类似的方式对待newun
。
您当前的批次尝试使用您的密码名称调用程序并获取该程序的输出(无,然后将其写入文件)。
您可以尝试这样做以查看效果:
doesnotexistforsure > output.txt
dir output.txt
执行此操作,您将收到“未找到命令”消息和空文件。这与您的批次中发生的情况相同。
答案 1 :(得分:0)
批处理程序读取输出的内容并将其存储在文本文档中,因此,如果您执行echo Hello
输出为Hello
< strong>不 echo Hello
如果您输入pause
,输出为Press any key to continue ...
,就像在屏幕上而不是在代码中一样。如果您为Password
password
输入%newpw%
将等于Password
,如果您echo: %newpw%
,则屏幕将显示Password
,因此输出是Password
。我会使用echo:
而不是echo
,因为echo:
将允许输出在文本文档中保存时没有任何错误批处理文件刚刚关闭。
echo: %newpw% >> C:\ProgramData\---\%newun%\%newun%pw.txt