创建批处理文件

时间:2017-11-29 17:40:35

标签: batch-file

我从老师处获得了关于创建批处理文件的任务。它非常庞大的任务,但我坚持了一部分。它问: 如果userdomain变量的值等于computername变量的值,那么 存储到名为output.txt的文件中以下信息: 1.当前用户名 2.当前的计算机名称

所以我想,我的用户名(域名用户名)永远不会与世界上任何地方的计算机名称相同!大声笑 所以这绝不会发生!在这种情况下,我什么都不做!

所以我很困惑。我错过了什么?!

1 个答案:

答案 0 :(得分:0)

可以为计算机提供域中用户帐户的名称。这是不被禁止的。您的计算机的名称与域中或本地的用户帐户名称不同并不意味着它不可能。

@echo off
setlocal EnableExtensions DisableDelayedExpansion
:RunNameCompare
if /I "%COMPUTERNAME%" == "%USERNAME%" (
    setlocal EnableDelayedExpansion
    echo User name: !USERNAME!>output.txt
    echo Computer name: !COMPUTERNAME!>>output.txt
    endlocal
) else (
    echo/
    echo Computer name and user account name are different.
    echo/
    %SystemRoot%\System32\choice.exe /N /M "Simulate identical names [Y/N]: "
    if not errorlevel 2 set "COMPUTERNAME=%USERNAME%" & goto RunNameCompare
)
endlocal

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • choice /?
  • echo /?
  • endlocal /?
  • goto /?
  • if /?
  • set /?
  • setlocal /?

另见以下页面和文章:

外部 SETLOCAL ENDLOCAL 用于在运行此批处理文件时创建本地环境,以便即使在模拟相同名称之后也是如此选项,预定义环境变量COMPUTERNAME在命令提示符窗口中运行批处理文件之后具有其原始值,如调试和验证开发中的批处理文件所建议的那样。

内部 SETLOCAL ENDLOCAL 用于输出正确的文件output.txt,甚至包含命令行关键字符的计算机和用户帐户名称,例如{ {1}}或以&()[]{}^=;!'+,`~|<>1范围内的空格和数字结尾,而不用双引号括起这两个名称。