我在win计划程序中执行了每分钟运行的任务.该任务运行一个.bat文件,SVN更新一系列文件夹,然后执行perl脚本(反过来将运行其他几个脚本).perl脚本的输出/'log'(由日期/时间标记)被发送到共享驱动器,而不是运行任务的机器的本地驱动器.
整个任务完美无缺,直到将日志发送到共享驱动器.由于任务需要每分钟运行一次,我认为最好在任务调度程序中使用"运行是否登录用户"设置.下面的框中详细说明了"不存储密码".该任务只能访问本地计算机资源.显然这对我不起作用,所以我不加控制地离开了.
但是,即使登录,脚本仍然不会写入共享驱动器.有没有人有任何关于如何解决此问题的建议?我也意识到我可以"只在用户登录时运行"(这会写入共享驱动器),但在这种情况下,我需要一种明确的方法来确保帐户永远不会注销,并且不能被其他人强制注销用户(计算机由多个用户共享,一次最多两个).
思考?
phd443322已经给出了正确答案.
如果网络连接是使用默认设置进行的,则Windows注册表中的每个用户帐户都会保存共享文件夹到驱动器号的映射.因此,每个使用计算机的用户都可以拥有不同的网络驱
登录时可以选择重新连接以将共享文件夹映射到默认选中的驱动器号.但是,在创建连接以将共享文件夹映射到仅用于当前用户会话的驱动器号之前,可以取消选中此选项.
net use /?
在命令提示符窗口中输入此命令的帮助,该命令用于将共享文件夹映射到命令行或批处理文件中的驱动器号.有/PERSISTENT:{YES | NO}
默认选项YES
.例如
net use Z: \\computer\share /persistent:no
将共享文件夹连接为驱动器Z:仅用于当前用户会话.
这解释了为什么AMcNall在自动化任务中使用网络驱动器失败的原因.
额外提示:
在使用连接到公司网络的办公室中使用的笔记本电脑,以及在家中的专用网络或没有网络,最后也经常在其他网络中,建议在登录后避免Windows自动网络驱动器连接我的观点.最好使用位于硬盘某处的批处理文件,并将该批处理文件的快捷方式存储在用户Windows开始菜单的" 启动 " 文件夹中,并将属性设置为运行具有最小化窗口的批处理文件.批处理文件包含例如:
@echo off echo Checking availability of server/computer XXX %SystemRoot%\system32\ping.exe -n 1 XXX >nul if errorlevel 1 goto EndBatch echo Map shared folder XXX\share to drive letter Z: %SystemRoot%\system32\net.exe use Z: \\XXX\share /persistent:no :EndBatch