【发布时间】:2016-08-05 13:30:38
【问题描述】:
我有一个使用两台服务器运行(A 和 B)的网站。它显示从 MSSQL 中提取的报告。服务器都是 Windows 2012 R2。我创建了一个 .bat 文件,用于将网站文件从一台服务器(B)复制到另一台服务器(A),以便我可以将它们一起更新。我只在服务器 B 上手动更新网站的文件。
我可以在我的计算机上或直接在任一服务器上正常运行 .bat 文件,它工作正常,所有文件都从 B 复制到 A。这是 .bat 文件:
rem echo off
SET source="D:\WebContent\engsys.corp.ftr.com"
SET source2="\\MAFINFWWWPV02\D$\WebContent\engsys.corp.ftr.com"
SET dest1="\\MAFINFWWWPV01\engsys.corp.ftr.com"
xcopy %source% %dest1% /E /Y
rem xcopy %source2% %dest1% /E /Y
echo #%username%@%computername%
我正在使用变量,以便我可以快速切换它们进行测试。
我在其中一个网页上创建了一个按钮,这样我只需单击该按钮,它就会运行 .bat 文件。但是,当我使用按钮运行它时,它不会复制文件。在网站上,当我单击按钮时,它被称为:system('cmd /c ' . $script); 然后在网页上显示
无效的驱动器规范 0 个文件已复制
如果我将目标更改为C:\Temp,那么它运行良好并将文件复制到运行脚本的服务器上的文件夹中。如果我将其更改为Z:\,那么我会得到与运行原始版本相同的错误。 Z:\ 是我放在 B 上的另一台服务器(A)的映射驱动器。
我知道服务器可以相互通信,因为我已将驱动器从一台服务器映射到另一台服务器以用于存储网站文件的位置,以便每台服务器都有一个映射到其他服务器网站文件的驱动器(@ 987654326@)。我原以为我可以用这个作为目的地。不过,这只是给出了同样的错误,即不是有效的驱动器。
由于我不是唯一将使用该网站的管理员,因此我确实需要此按钮才能工作。我们中有 2 个人可能会更新文件,但我们有一个团队可能需要我们管理页面来更新某些内容,然后需要使用按钮来确保将它们复制到两个服务器。
编辑
我注释掉了echo off 这是运行.bat 文件的结果。我确实对其进行了格式化,使其不仅仅是一个长字符串。
>rem echo off
>SET source="D:\WebContent\engsys.corp.ftr.com"
>SET source2="\\MAFINFWWWPV02\D$\WebContent\engsys.corp.ftr.com"
>SET dest1="\\MAFINFWWWPV01\engsys.corp.ftr.com"
>xcopy "D:\WebContent\engsys.corp.ftr.com" "\\MAFINFWWWPV01\engsys.corp.ftr.com" /E /Y Invalid drive specification 0 File(s) copied
>rem xcopy "\\MAFINFWWWPV02\D$\WebContent\engsys.corp.ftr.com" "\\MAFINFWWWPV01\engsys.corp.ftr.com" /E /Y
>rem pause
>echo #MAFINFWWWPV02$@MAFINFWWWPV02 #MAFINFWWWPV02$@MAFINFWWWPV02
不使用网站从服务器运行时的用户名计算机名称:
#mmm976@MAFINFWWWPV02
【问题讨论】:
标签: php windows batch-file