这很奇怪。我有一个.bat文件,我使用Windows 7的调度程序运行,我注意到我对它进行了更新后,它仍然表现得好像运行旧版本的.bat程序。
很容易分辨哪一个运行 - 它们输出到.txt文件,新版本转储了更多信息。所以这是在三种情况下发生的事情:
打开cmd窗口(右键单击并“以管理员身份运行”)。 CD到目录并以通常的方式执行setvispw.bat,输入“setvispw.bat”并按Enter键。
结果:当前版本按预期运行。
右键单击setvispw.bat和“打开”
结果:当前版本按预期运行。但这并不好,因为我正在更改其他用户的密码并需要管理员权限。
右键单击setvispw.bat和“以管理员身份运行”。 结果:其他东西运行!在我几天前对.bat进行更改之前,它似乎正在运行该版本。
所以我尝试了一些更奇怪的东西。我用虚拟程序替换了我的功能程序......它正在运行虚拟程序。
最后,我添加了一些“暂停”声明......就在我得到答案的时候。我将使用“回答您自己的问题”功能,而不是放弃这一点故障排除。
答案 0 :(得分:1)
事实证明问题是我依赖于setvispw.bat的输出来告诉我该程序的运行版本。好吧,旧版本和新版本都有这一行:
echo Random string is !_RndAlphaNum! > C:\pathname\curVisitorPW.txt
但我添加的内容是这样的:
echo Sending email: >> curVisitorPW.txt
当我从C:\ pathname运行时,无论是在CMD窗口中还是没有管理员权限,它都运行得很好。但是当我使用Admin privs运行时,就像它从Scheduler那样,工作目录不是C:\ pathname - 它的C:\ Windows \ System32。直到我添加"暂停"我才看到它。并且看到我没有在我开的地方跑步!果然,在System32中有一个curVisitorPW.txt。
当然,解决方案很简单 - 使用完全限定的路径名。
希望如果像我一样的人在.bat文件中看到奇怪的行为,并且开始想知道是否存在某种缓存,管理员权限/权限或其他疯狂的东西,这将会派上用场。我准备把它钉在小鬼身上,我自己。