1

我正在尝试运行一个批处理文件,该文件将连接到我网络上的 ip 列表,打开 cmd 然后运行命令列表:如 ipconfig /all、nbstat -c、arp -a。然后它必须将结果保存到重命名为“计算机名”的文件夹中。

我已经制作了一个批处理文件,可以执行我想要的命令并使用计算机创建一个文件夹,然后将不同的命令输入到该文件夹​​中的 txt 文件中。

这是 WindowsCommands 批处理文件:

md %computername%

echo off

echo ARP Command
arp -a >> %cd%\%computername%\arp-a.txt

echo NBSTAT Command
nbtstat -c  >> %cd%\%computername%\nbstat.txt

echo Ipconfig Command
ipconfig /all  >> %cd%\%computername%\ipconfig-all.txt

echo Ipconfig DNS Command
ipconfig /displaydns  >> %cd%\%computername%\ipconfig-displaydns.txt

echo Netstat Command
netstat -ano  >> %cd%\%computername%\netstat-ano.txt

echo Tasklist Command
tasklist /v  >> %cd%\%computername%\tasklist.txt

echo LG Admin Command
net localgroup administrators >> %cd%\%computername%\netlocalgroupadmin.txt

echo Directory Command 
dir C:\Windows\Prefetch >> %cd%\%computername%\prefetch.txt

exit

我还创建了一个 hosts.txt 文件,其中包含我想要在其上运行命令的本地 IP 地址。

我还创建了另一个批处理文件名 psexec 来运行 For 循环。

现在我在尝试运行 psexec 批处理文件时遇到了麻烦。

这是我的 psexec 文件:

for /f %%a in (hosts.txt) do (
psexec \\%%a C:\Users\ISSG\Documents\WindowsCommands.bat
)

现在这只是一个粗略的草稿,我不完全确定它是否应该这样编码。这是我编写的第一个自动化脚本之一。

所以简而言之,我需要能够将这个批处理文件从我的本地计算机 - psexec 运行到 IP 中。收集信息并将其输出到本地计算机上的 txt 文件中。

如果有人能指出我正确的方向,那就太好了!谢谢!

4

1 回答 1

1

如果您的批处理文件不存在于所有计算机的系统目录中,则必须使用 -c 开关将其复制到它们才能运行它。最好先尝试 ping 计算机以节省尝试连接的时间。

for /f %%a in (hosts.txt) do (
  for /f "tokens=2 delims=:" %%b in ('ping -n 1 %%a ^| find "TTL="') do (
    if errorlevel 0 (
      psexec \\%%a -c -f -u username -p password C:\Users\ISSG\Documents\WindowsCommands.bat
    )
  )
)

另外,请记住,这将在远程计算机上的 System32 目录中创建文件夹。如果您希望它在本地驱动器上,请执行以下操作:

@echo off

FOR /F "tokens=2" %%A IN (
  'net use * "\\computer\share"'
) DO IF NOT %%A.==command. SET dl=%%A

if not exist "%dl%\%computername%" md "%dl%\%computername%"

echo ARP Command
arp -a >> %dl%\%computername%\arp-a.txt

echo NBSTAT Command
nbtstat -c  >> %dl%\%computername%\nbstat.txt

echo Ipconfig Command
ipconfig /all  >> %dl%\%computername%\ipconfig-all.txt

echo Ipconfig DNS Command
ipconfig /displaydns  >> %dl%\%computername%\ipconfig-displaydns.txt

echo Netstat Command
netstat -ano  >> %dl%\%computername%\netstat-ano.txt

echo Tasklist Command
tasklist /v  >> %dl%\%computername%\tasklist.txt

echo LG Admin Command
net localgroup administrators >> %dl%\%computername%\netlocalgroupadmin.txt

echo Directory Command 
dir C:\Windows\Prefetch >> %dl%\%computername%\prefetch.txt

Net use %dl% /delete
于 2013-05-21T14:01:50.300 回答