【发布时间】:2013-10-27 18:30:22
【问题描述】:
我有一个 Windows 2008 Server(非 R2);我试图根据应用程序池列表修改属性 (/AppPool/maxProcesses)。 所以我这样做了:
set appcmd=c:\Windows\system32\inetsrv\appcmd.exe
for /f %p in (c:\apppools.txt) do @%appcmd% set apppool %p /processmodel.maxProcesses:2
没有输出。此外,这都是交互式的,而不是批处理文件。 通常,它应该显示 AppPools,以及它正在设置属性的事实,或者错误,以防拼写错误。
然后我继续验证为什么它不输出
for /f %p in (c:\apppools.txt) do @echo %p
什么都没有。 我转到另一个 Windows 2008(它们实际上是经过系统准备的,因此被认为是相同的。两个命令都有效!
有没有人见过这样的东西,或者至少是类似的? 我在想这台服务器可能需要休眠(重启),但这可能只在周末才有可能,因为它是一台服务器。
感谢您的任何建议,
【问题讨论】:
-
你确定 C:\apppools.txt 不是机器上不工作的 0 字节文件吗?听起来好像是空的。如果不是,内容是什么?
-
没有,恐怕不是空的。
-
抱歉,我不知道在移动设备上发送帖子而不是换行符。不,恐怕它不是空的。我还在记事本中打开了文件,复制了它,关闭了记事本,删除了文件,然后重新创建了它以确保它不包含任何奇怪的字符。它包含该服务器上 appcmd list apppools 的输出。在另一台(不同的服务器)上,我创建了相同的文件,相同的输出。老实说,这就像 Windows 在该服务器上已经失败了。在故障服务器上的 Powershell 中尝试了几个批处理循环,效果很好。
-
在坏的服务器上尝试
type c:\apppools.txt,看看输出是否符合您的预期。 -
也许空间是个问题?试试这个
for /f "delims=" %p in (c:\apppools.txt) do @echo %p。看来你可能还是想要那个。
标签: windows loops batch-file for-loop