我正在尝试将此批处理文件复制到DLL上,并将其复制到正确的文件夹,具体取决于天气是否为64位机器。
这是批处理文件代码:
c:
IF EXIST c:\Program Files (x86)\Latitude Software\bin\\.(
cd\Program Files (x86)\Latitude Software\bin
xcopy c:\collectdb\*.dll /y
)
c:
IF EXIST c:\Program Files\Latitude Software\bin\\.(
cd\Program Files\Latitude Software\bin
xcopy c:\collectdb\*.dll /y
)
PAUSE
将它们正确复制到我机器上的64位文件夹中。但是当它检查是否c:\ Program Files \ Latitude Software \ bin \时。存在它似乎回来了,因为它试图再次执行下面的代码。
要清楚c:\ Program Files \ Latitude Software \ bin \。不存在。
我的IF语句不正确吗?
答案 0 :(得分:1)
考虑到您的原始问题是确定机器是否为64位 - 我建议使用%PROCESSOR_ARCHITECTURE%环境变量。 如果没有安装x86程序,我不确定Windows是否创建“c:\ Program Files(x86)”文件夹。 如果默认情况下“Program Files(x86)”文件夹不存在 - 您的方法可能会失败。
echo %PROCESSOR_ARCHITECTURE%
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
echo Processor architecture is x86
rem your code here
) else (
echo Processor architecture is amd64
if not exist "c:\Program Files (x86)" (
mkdir "c:\Program Files (x86)"
rem your code here
)
)
答案 1 :(得分:0)
问题是在另一个答案中提到的缺少引号,而在括号成为另一个问题之前的空格也是如此。
以下是另一种解决问题的方法:
@echo off
IF EXIST "c:\Program Files (x86)\Latitude Software\bin\" (
cd /d "c:\Program Files (x86)\Latitude Software\bin"
xcopy "c:\collectdb\*.dll" . /y
) else (
if exist "c:\Program Files\Latitude Software\bin\" (
cd /d "c:\Program Files\Latitude Software\bin"
xcopy "c:\collectdb\*.dll" . /y
)
)