如何使用批处理脚本nslookup和写入txt文件。

时间:2017-08-03 11:45:22

标签: windows batch-file

我正处于一个小编程任务的中间,我很难过。需要做的是 - >

创建批处理文件以执行以下步骤(尽可能以伪代码编写)

IF USERDOMAIN==COMPUTERNAME 
THEN
CreateFile cake.txt
cake.txt = %USERNAME% + " " + %COMPUTERNAME% + " " + nslookup(www.disney.com)

另一方面,我走了多远是<= p>

IF USERDOMAIN == COMPUTERNAME GOTO Text

:Text
echo.>"C:\cake.txt"
rem Saved in C:\cake.txt
echo USERNAME >> cake.txt
echo COMPUTERNAME >> cake.txt

我只知道C#,并且使用stackoverflow我发现了类似的问题: Batch script for loop & nslookup

但是,这个问题的语法只是nslookup的一般,我根本不了解Windows批处理语法,我通过几个小时的搜索得到了这个。

1 个答案:

答案 0 :(得分:0)

应该是:

@echo off
rem case insensitive string comparison
if /i %USERDOMAIN% == %COMPUTERNAME% (
   rem clear file
   break>"C:\cake.txt"
   rem output all commands in following block to file
   (
      echo %USERNAME%
      echo %COMPUTERNAME%
      nslookup www.disney.com
   ) >> "C:\cake.txt"
)

如果你想过滤nslookup的输出,你必须采用不同的方式,但是你没有说明输出看起来应该是这样的mabe应该是足够的。

  

我根本不了解Windows批处理语法

如果您对自己的问题更具体,那么就可以向您解释您没有得到的问题 关于批处理脚本的一个很好的参考是the site SS64。每个命令都在那里得到很好的解释并通过例子完成。

  

为什么使用@echo off?在开始时,稍后使用echo?它不仅仅是一种输出代码进展状态信息的方法吗? /i的目的对我来说也是未知的,最后,为什么在处理文件之前你break?我读到一个>用于删除和清除文字,那么为什么需要某种break

<强> 1。 @echo offecho

使用@echo off命令以便在批处理期间不显示命令本身,请考虑以下示例:

@echo off
echo Hello world with echo off!
@echo on
echo Hello world with echo on!

在命令提示符下,它将打印如下内容:

Hello world with echo off!

C:\Users\...\Desktop>echo Hello world with echo on!
Hello world with echo on!

echo命令仅用于向控制台输出内容。

<强> 2。 if /i

/i会比较不区分大小写的字符串,以便"ABC" == "abc""abC" == "AbC"true

第3。 break>>>

清除您使用的文件echo.>"C:\cake.txt"。这不是完全错误的,但是会将新行保存到文件中而不清除它,因为echo.表示新行。 break命令将不生成输出(see here on SO),如果将其重定向到>文件,则文件将完全为空。
在谈论重定向时,您在>>>之间有所不同。单个>表示覆盖现有文件(如果已存在),并且双>>表示附加到文件或创建新文件(如果该文件不存在)。