当从VS运行批处理作为生成后事件时,我的某些文件夹在命令行中变得不可见。错误日志和输出日志无法描述。
在我的后续批次中,我无法访问SCP(System32 \ OpenSSH \ scp.exe)
构建事件:
IF NOT DEFINED PUBLISHING (
set PUBLISHING ='ON'
call "$(ProjectDir)Publish.bat"
PUBLISHING=
)
将call
更改为start
,一个cmd窗口弹出,我检查了变量并在环境中戳了一下。
PATH
很好(并且与cd
开头没有任何关系][闲逛时,如果我尝试更改目录,它会声称System32\OpenSSH
不存在!(绝对路径被截断)
管理员无法访问哪些系统文件夹?
基于Mofi的评论,>>
请阅读有关WOW64 Implementation Details的Microsoft文档。有两个%SystemRoot%\ System32目录。使用哪一种取决于执行环境,32位还是64位环境。
很容易确定VS使用的
cmd
是x86,因此无法访问相同的System32
文件夹。为了使用OpenSSH\SCP
,我需要调用x64版本的cmd。
为此,我们也可以参考Mofi的other answer。
结果是这样的:注意:这里我们开始一个新的cmd窗口,因为发布需要用户输入。常规的“通话”也应该很好
IF NOT DEFINED PUBLISHING (
set PUBLISHING='ON'
:: We know we are currently running x86, so call other cmd without checking version
start %SystemRoot%\Sysnative\cmd.exe /C call "$(ProjectDir)Publish.bat"
PUBLISHING=
::Needed to add for build to 'succeed', not in original script post
exit /b 0
)