Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 按体系结构复制和启动可执行文件的批处理文件_Batch File_Login Script - Fatal编程技术网

Batch file 按体系结构复制和启动可执行文件的批处理文件

Batch file 按体系结构复制和启动可执行文件的批处理文件,batch-file,login-script,Batch File,Login Script,我试图创建一个登录批处理文件,将32位和64位可执行文件从服务器复制到用户的本地计算机,然后根据操作系统类型/体系结构执行这些文件。这就是我到目前为止所拥有的,它似乎不起作用,因为它只启动32位文件,而没有检测和启动64位文件。我是新手,所以任何帮助都将不胜感激 @echo off c: MD c:\temp xcopy \\server\NETLOGON\SEPRemoval c:\temp /e /y cd c:\temp if /i "%PROCESSOR_ARCHITECTURE%" E

我试图创建一个登录批处理文件,将32位和64位可执行文件从服务器复制到用户的本地计算机,然后根据操作系统类型/体系结构执行这些文件。这就是我到目前为止所拥有的,它似乎不起作用,因为它只启动32位文件,而没有检测和启动64位文件。我是新手,所以任何帮助都将不胜感激

@echo off
c:
MD c:\temp
xcopy \\server\NETLOGON\SEPRemoval c:\temp /e /y
cd c:\temp
if /i "%PROCESSOR_ARCHITECTURE%" EQU "x86" goto ARCH32
if /i "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" goto ARCH64


:ARCH32
start /wait SEPprep.exe
goto done

:ARCH64
start /wait SEPprep64.exe
goto done

:done

timeout 15
cd \
del c:\temp /q
exit

问题不在于批处理文件,而在于您依赖的环境变量与您认为的不一样

在我的64位Windows 7计算机上,ENV显示:

…因此,依靠处理器体系结构来区分32位和64位机器是行不通的

关于这个问题,有一个很好的解释

修复检测处理器体系结构的方法,您应该可以。

查看systeminfo

或者简单地说

if defined ProgramFiles(x86)

这将检查ProgramFilesx86环境变量是否仅在64位版本的Windows上定义。

这是我在Microsoft Scripting guys论坛上得到的一些人的帮助下最终提出的解决方案:

@echo off
c:
MD c:\temp
xcopy \\server\NETLOGON\SEPRemoval c:\temp\ /e /y
cd /d c:\temp
if {%PROCESSOR_ARCHITEW6432%} EQU {} (
  set TRUE_ARCH=%PROCESSOR_ARCHITECTURE%
   start /b /wait SEPprep.exe
   goto Done
) else (
  set TRUE_ARCH=%PROCESSOR_ARCHITEW6432%
  start /b /wait SEPprep64.exe
  goto Done
)
echo Processor Architecture is %PROCESSOR_ARCHITECTURE%

:Done
timeout 15
rd /s /q c:\temp 1>nul 2>nul
exit

在StackOverflow中搜索处理器_架构可找到197个结果。。。很可能有人已经发布了您所需的确切代码!
if defined ProgramFiles(x86)
@echo off
c:
MD c:\temp
xcopy \\server\NETLOGON\SEPRemoval c:\temp\ /e /y
cd /d c:\temp
if {%PROCESSOR_ARCHITEW6432%} EQU {} (
  set TRUE_ARCH=%PROCESSOR_ARCHITECTURE%
   start /b /wait SEPprep.exe
   goto Done
) else (
  set TRUE_ARCH=%PROCESSOR_ARCHITEW6432%
  start /b /wait SEPprep64.exe
  goto Done
)
echo Processor Architecture is %PROCESSOR_ARCHITECTURE%

:Done
timeout 15
rd /s /q c:\temp 1>nul 2>nul
exit