使用BATCH创建.txt文件

时间:2015-12-29 01:27:27

标签: batch-file cmd

我尝试创建一个允许您输入用户名和密码的程序,然后创建一个与输入的用户名同名的文件夹,然后在包含密码的文件夹中创建.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
    )

2 个答案:

答案 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