我一直试图通过搜索网络\\computername\c$\Program Files\Foo
上的主机名来找到我公司软件在PC上的存在,如果找到它,请复制一下更新配置等。
我已经看到net view
将所有PC都放在网络上,如下所示:
\\DISKSTATION \\JWLAPTOP \\TEST \\XP The command completed successfully.
我想知道是否有办法将计算机名称放在一个干净的清单中(没有"命令已完成"等等):
\\DISKSTATION \\JWLAPTOP \\TEST \\XP
然后对hostnames.txt
中的所有内容(如果存在)运行一些命令:
\\JWLAPTOP\c$\Program Files\Foo --> do copy xyz to wherever
我可以将部分\c$\Program Files\Foo
作为一个变量来处理,以便在文本文件中的计算机名称之后添加。
希望有意义,感谢任何提示。 修改的
一直在想这可能有更直接的方法来做到这一点......
我需要在客户网络上查看PC列表..... net view是获取此信息的好方法,但我还需要查看哪些是在线的。任何在线,查询文件夹并更新* .CFG文件,任何离线,输出到文本以供参考。
所以当下......
FOR /F "tokens=1 delims= " %%G IN ('net view ^|findstr /L /B /C:"\\"')
这很好用,然后我把它输出到一个文本文件..
FOR /F "tokens=1 delims= " %%G IN ('net view ^|findstr /L /B /C:"\\"') DO (echo %%G>>%~dp0netview.txt)
然而,%% G回显了一些计算机,这意味着我正在努力争取一条新线......
for /f %%G in (%~dp0netview.txt) DO
(ping等......
因为计算机名称之前的\而ping。所以我们想知道我们是否可以制作清单' just"在它之前没有\的PC名称。
这也是我需要编辑的.cfg文件的内容...
<?xml version="1.0" encoding="utf-8"?>
<ClientConfigurationFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ServerPath>**\\server\shared\data**</ServerPath>
<ApplicationMode>Workstation</ApplicationMode>
<VRPath />
<ServicePollingInterval>0</ServicePollingInterval>
</ClientConfigurationFile>
也许有一种方法可以在找到它的存在后直接编辑它的某个部分。 \ server \ shared \ data ...以粗体显示我需要经常更新客户端有新的服务器和东西,并且需要绕过很多房间进行手动更新。这批产品可以节省数小时的不必要工作。
编写现有的.cfg文件仍然是一个很好的方法,如果它太棘手或不可能直接。希望有意义,感谢回复!!!
答案 0 :(得分:1)
假设您的计算机名称中没有空格。
@echo off
FOR /F "tokens=1 delims= " %%G IN ('net view ^|findstr /L /B /C:"\\"') DO (
IF EXIST "%%~G\c$\Program Files\Foo" copy "C:\folder\xyz.txt" "C:\other folder\"
)
如果你想要剥离前导反斜杠,那么就像使用空格作为分隔符来消除所有无关的NET VIEW输出一样使用它作为分隔符。
@echo off
FOR /F "tokens=1 delims=\ " %%G IN ('net view ^|findstr /L /B /C:"\\"') DO (
PING %%G
IF EXIST "\\%%~G\c$\Program Files\Foo" copy "C:\folder\xyz.txt" "C:\other folder\"
)
答案 1 :(得分:0)
您可以执行以下操作:
@echo off
setlocal EnableExtensions
set "TARGET=C$\Program Files\Foo"
for /F "eol=| delims=" %%C in ('
net view ^| find "\\"
') do (
pushd "%%C\%TARGET%"
if not ErrorLevel 1 (
rem do your operations here...
copy "\your\source\path\xyz" "."
popd
)
)
endlocal
for /F
循环遍历net view
返回的所有主机名(假设每个主机名都以\\
开头且仅主机名)。<登记/>
由于生成的路径(例如\\TEST\C$\Program Files\Foo
)是多个命令不支持的UNC路径,因此使用pushd
,它能够通过建立临时驱动器号{{}}来连接到给定资源。 {1}},并立即将工作目录更改为其根目录(如果命令扩展名处于打开状态,则为Windows默认值)。
查询Z:
用于跳过其余命令,以防由于某种原因if not ErrorLevel 1
无法连接到资源。
完成所有操作后,pushd
可确保卸载popd
创建的临时驱动器,并恢复以前的工作目录。