这是我在这个网站上的第一篇文章,虽然我经常使用它。理想情况下,我写了一个批处理文件来执行以下操作。注意:这里有很多回声,以帮助我调试。
1。)清理旧的日志文件,这个工作文件
2.)Ping一个系统列表并将成功的结果输出到一个文件而将另一个文件输出到另一个文件
3.)检查软件是否存在,如果没有下载则
4.)在端点上安装软件
我遇到的问题是成功的ping输出文件有尾随空格。因此,安装命令不起作用。它将尾随空格放在UNC路径中。由于存在空格,因此run命令不起作用。
请帮助,由于我的额头砸到它,我的桌子正在破碎。
@echo off
cls
set file=_0_Add_Systems_Here.txt
set log1=_3_Responsive.txt
set log2=_4_Non-Responsive.txt
set dir=%cd%
FOR /F "usebackq" %%i IN (`hostname`) DO SET host=%%i
echo Run Cleanup
start _2_Dont_Run_Me.bat
echo Ping
for /F "tokens=*" %%a in (%file%) do @ping %%a | find "TTL=" > nul && echo %%a >> %log1% || echo %%a >> %log2%
echo Output systems
for /F "tokens=*" %%a in (%log1%) do echo "%%a"
echo Check for Framepkg
if not exist framepkg.exe Copy \\<Removed>\c$\MFE\framepkg.exe | echo copying frame package.
if exist framepkg.exe echo Found frame package.
echo copy framepackage to system
for /F "tokens=*" %%b in (%log1%) do copy %dir%\framepkg.exe \\%%b\c$\framepkg.exe /y >> _5_McAfee_Deployment_Output.txt
for /F "tokens=*" %%b in (%log1%) do echo \\%%b\c$\framepkg.exe
echo start agent install
for /F "tokens=*" %%c in (%log1%) do psexec \\%%c cmd /c "c:\framepkg.exe /install=agent /forceinstall" >> \\%host%\%dir%\_5_McAfee_Deployment_Output.txt
答案 0 :(得分:2)
....&& >>%log1% echo %%a||>>%log2% echo %%a
应该解决您的问题(代码中的额外空格似乎会导致问题;语句中的重定向器位置不相关 - 首先与上一个一样好)
OR
....&& echo %%a\ >> %log1% || echo %%a\ >> %log2%
和
for /F "delims=\" %%b in (%log1%)....
但这会在您的日志文件中添加额外的\
。
(\
的原因是它不能存在于有效数据中)